2011-07-29 3 views
2

私は、次の2つのif文をよりよく整理したいと思います:これらの2つの連続したIF文をより良く整理するにはどうすればよいですか?

if(A || B){ 
    do stuff... 
} 

if(A && ! B){ 
    do other stuff... 
} 

は、より良い方法はありますか?

EDIT:第二文のB!、申し訳ありません...

+1

A && Bが真である場合、A || Bは真と評価されます。これはあなたが望む行動ですか? –

+0

残念ながら私は忘れてしまった! 2番目のIF文でBの前に演算子を追加します。私は今質問を編集しました。 – fstab

答えて

6
if(A || B) { 
    do some stuff; 
    if(!B) { 
     do other stuff; 
    } 
} 

しかし、このメリットは使用方法によって異なりますが、このバージョンを理解することは難しいかもしれません。

+1

誰かが最終的にそれを得る、私は利点を見ることができないと思った:) +1 –

+0

@餃子、ええ、私も、ちょうど質問に答えた:D – unkulunkulu

+0

よく今は利点は、コードのパフォーマンスは、 Aの評価だけでなく、コードは単純化され、任意の複雑なA式の2回目の型指定が回避されます。欠点は、追加の入れ子レベルが得られたことです。 – fstab

2

第2の条件は& & Bだった元の質問については、私の答えは次のとおりです。

何もない場合は、最初の条件が失敗した場合に不要な評価が行われないように、最初のブロックの内側に2番目のブロックをネストすることができます。さもなければ、私はこれを短くする良い方法は見当たりません。そしてネストは、最初のブロックのコードがAとBを更新しないと仮定します。

新しい質問では、私の答えは、最初のブロックに!Bを埋め込み、2番目のブロックを省略することです。これは新しい質問に与えられた別の答えと同じです。

+1

OPが質問を変更したため、私の答えはもはや関連性がなくなりました。 – Patrick87

+2

コメントを追加するのではなく、編集または削除することをお勧めします。 –

関連する問題