ふと思ったったー
仕事で先日書いたコードにコメント書き足していてふと思ったんですが、
A|Bな真偽値と1|2な真偽値の組み合わせの条件文ってどう書きますか?
// case.1 if (A && 1) { BLOCK1 } else if (A && 2) { BLOCK2 } else if (B && 1) { BLOCK3 } else if (B && 2) { BLOCK4 }
シンプルに書くとこうなりますね。でも、elseがないのが残念です
// case.2 if (A && 1) { BLOCK1 } else if (A && 2) { BLOCK2 } else if (B && 1) { BLOCK3 } else { BLOCK4 }
elseにしてみました。でも、このelseは何者?って感じですね
// case.3 if (A && 1) { BLOCK1 } else if (A && 2) { BLOCK2 } else if (B && 1) { BLOCK3 } else if (B && 2) { BLOCK4 } else { // oops...something wrong }
elseを追加してみました、でも、elseに入ってくる時点でおかしいですね
// case.4 if (A) { if (1) { BLOCK1 } else { BLOCK2 } } else { } if (1) { BLOCK3 } else { BLOCK4 } }
Bと2が条件に明記されてない上にレキシカルスコープとか考えちゃいますね
// case.5 if (A && 1) { BLOCK1 } else if (A) { BLOCK2 } else if (1) { BLOCK3 } else { BLOCK4 }
最初に書いてた条件文がコレ
コメント書いてる途中で、新卒の人間が保守ったりって考えると不親切?
とか思って、何人かに聞いてみたわけですが、仕事コードだと
どれが最適なんでしょう?
20111112追記: case.n、s/EXPR/BLOCK/