整合冗余条件

时间:2015-01-26 14:08:30

标签: vb.net visual-studio-2013 resharper

在我正在维护的项目中,Visual Studio标记了一些高复杂度的代码。代码正在为打印预览创建原始RTF,并且具有许多具有相同条件的行If bolprint Then ...。一些条件是一行,其他是多行。并非本节中的所有代码都使用条件。

我想干净地巩固这些条件,但我不确定如何在不一次一行的情况下这样做。我有ReSharper,但我不知道如何为此写SSR。

编辑:

代码包括单行条件和条件块。更复杂的是,也有条件的行,所以我不能包装整个块并进行正则表达式查找/替换。一些示例行:

If bolPrint Then
    If Me.cbxDeltaBC.Checked AndAlso Me.cbxEqualBC.Checked Then Writer.WriteLine("\pard\b0                    Printed by: \b " & strUserLoggedIn _
       & "                 EQUAL and DELTA             Sort by: \b " & cbbSortBC.Text & "\par")
    If Me.cbxDeltaBC.Checked AndAlso Not Me.cbxEqualBC.Checked Then Writer.WriteLine("\pard\b0                    Printed by: \b " & strUserLoggedIn _
       & "                      DELTA                  Sort by: \b " & cbbSortBC.Text & "\par")
    If Not Me.cbxDeltaBC.Checked AndAlso Me.cbxEqualBC.Checked Then Writer.WriteLine("\pard\b0                    Printed by: \b " & strUserLoggedIn _
       & "                      EQUAL                  Sort by: \b " & cbbSortBC.Text & "\par")
End If

If bolPrint Then Writer.Write("\par\ulnone\fs16 ")
If bolPrint Then Writer.Write("(A)               ")
If bolPrint Then Writer.Write("(A)     ")
If bolPrint Then Writer.Write("(A)   ")
If bolPrint Then Writer.Write("    (A)  ")
If bolPrint Then Writer.Write(" (A&B)             ")
If bolPrint Then Writer.Write("(A&B)   ")

1 个答案:

答案 0 :(得分:0)

我认为,不幸的是,Resharper无法帮助你。您可能需要手动清理它。在一个条件内对语句进行分组不应该花费太长时间。如果有单元测试,那么它可能会让你对重构这个精彩的代码更有信心。只要一次做一点点,比如“童子军”规则' - 让这个地方处于比你发现的更好的状态。