缩短此IF声明

m.e*_*son 2 .net vb.net refactoring

我不喜欢宽代码,特别是当它迫使我滚动时.所以写了这个:

If _item.SubItems(pd.perioddate).Text = "N/A" Or _item.SubItems(pd.perioddate).Text = String.Empty Then
            dtpDeadlineforAP.Checked = False
End If
Run Code Online (Sandbox Code Playgroud)

是否有一种体面的方式来减轻它,使它更优雅?

Pét*_*rök 5

提取_item.SubItems(pd.perioddate).Text到局部变量,例如

String text = _item.SubItems(pd.perioddate).Text

If text = "N/A" Or text = String.Empty Then
            dtpDeadlineforAP.Checked = False
End If
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望将整个检查提取到单独的方法中:

If isNotFilled(_item.SubItems(pd.perioddate)) Then
            dtpDeadlineforAP.Checked = False
End If
Run Code Online (Sandbox Code Playgroud)

这将使代码更具可读性,并允许您重用检查逻辑.