2012-01-11 9 views
1

ex。vb6の10行継続制限を超えるif文のベストプラクティス

if condition or _ 
condition or _ 
condition or _ 
condition or _ 
condition or _ 
condition or _ 
condition or _ 
condition or _ 
condition or _ 
condition or then 
do something 
end if 

は、if文だけでこれらの複数のセットをネストより良い方法はあります...私は私が評価する必要があり、これらの10点の条件よりも多くを持っていると言いますか?

+0

を使用し、その後の条件が同じではないselect文を使用したい場合は、ライン上で複数の条件を置くことができますが、それは読みやすさを傷つける可能性があります。 –

答えて

3

これはオプションです。一度に1つのテストを行い、最終結果をブール値で追跡します。すべて完了したら、ブール値をテストします。

Dim A As Long 
Dim B As Long 
Dim C As Long 
Dim D As Long 

Dim Result As Boolean 

Result = True 
Result = Result And (A > 10) 
Result = Result And (B > 10) 
Result = Result And (C > 10) 
Result = Result And (D > 10) 

If Result Then 
    ' Do "something" here... 
End If 

A、B、Cのいずれか、またはDが10未満である、ResultFalseに反転した後、上からそのようにとどまる場合。すべてのテストが合格する場合は、Trueになります。

+0

エレガントな、私はそれが好きです。ありがとうございました! –

2

ケースステートメントを使用できます。 IFより少しきれいです:http://msdn.microsoft.com/en-us/library/cy37t14y%28v=vs.80%29.aspx

+0

hmmmこれは、それぞれの間に "do something"機能を置く必要があります。またはそれぞれのためにフラグを更新する。長期的には、ネストされたifよりも多くのコードのように思えます。 –

+0

@TonyRaymondそれは条件が何であるかによって異なります。式が値のセットと一致するかどうかを確認する場合、 'Select Case'は完璧です。たとえば、変数 'a'が値のセットの1つを持っているかどうかをチェックするには、このケースを選択します。ケース1,2,3,4,5,6,7,8,9,10:何かを実行します。 – MarkJ

1
dim Result as boolean 
result = false 
if condition1 then result = true 
elseif condition2 then result = true 
elseif condition3 then result = true 
elseif condition4 then result = true 

if result then debug.print "Success" 

あなたは

select case True 
    case A=5,b=10,c="my answer",d=11 
     .... 
end select 
関連する問題