2016-04-13 22 views
-5

私のIf文には6つのテスト条件があります。このコードを最小化する方法はありますか?if vb.netのif文

If (DataBinder.Eval(e.Item.DataItem, "strControlId")).ToString.Contains("_default") AndAlso (Convert.ToInt32(Request.QueryString("numFormNumber")) = 1) AndAlso Not (DataBinder.Eval(e.Item.DataItem, "strControlId")).ToString.Contains("RequiredOwner_default") AndAlso Not (DataBinder.Eval(e.Item.DataItem, "strControlId")).ToString.Contains("cmbConsequence_default") AndAlso Not (DataBinder.Eval(e.Item.DataItem, "strControlId")).ToString.Contains("cmbLikelihood_default") AndAlso Not (DataBinder.Eval(e.Item.DataItem, "strControlId")).ToString.Contains("cmbSeverity_default") Then 

End If 

答えて

1

"if"条件の論理については十分に分かりませんが、繰り返しコードに変数を使用する場合は、コードをよりきれいにすることができます。

Dim strControlId As String = DataBinder.Eval(item, "strControlId")).ToString 

If (strControlId.Contains("_default")_ 
AndAlso (Convert.ToInt32(Request.QueryString("numFormNumber")) = 1) _ 
AndAlso Not (strControlId.Contains("RequiredOwner_default")_ 
AndAlso Not (strControlId.Contains("cmbConsequence_default") _ 
AndAlso Not (strControlId.Contains("cmbLikelihood_default")_ 
AndAlso Not (strControlId.Contains("cmbSeverity_default") Then 
+0

コードは「もっとクリーン」ではありません。 'DataBinder.Eval(item、" strControlId "))の値を評価するので、**高速**を実行します。ToString' ** ** **回ではなく、一度** **です。 –