ここまでで,if文に関するコードの解説をしてきましたので,いったんまとめてみたいと思います。
1.1 elseをなくす
まずポイントの1つとしては,elseをなくすことを検討してもらうと,結構いいコードになっていくと思います。「対象外の時はすぐに抜ける」に関しても,結局elseが無いわけです。
//GOOD:対象外の時はすぐに抜ける private bool 対象外の時はすぐに抜ける(Product product) { if (product == null) { return false; } if (product.ProductName == null) { return false; } if (product.ProductName.Length <= 3) { return false; } return product.ProductName.Substring(2, 1) == "A"; }
elseをなくすことでネストが浅くなるので,コードとしても右に長くならず,読みながら脳みそに覚えさせることも少なくて済むので,非常に読みやすくなります。
1.1 早めに抜ける
if文のもう一つのポイントが,早めに抜けるということですね。対象外の場合は極力早めに抜けて,すべてをくぐり抜けてきた場合のみ処理するという形が一番読みやすいコードになります。「この時は抜ける」「この時は抜ける」「この時は抜ける」というのを必要なだけやって,最後に処理を書くという感じですね。こんな感じで,早めにぬけるというのがポイントです。
1.2 合わせ技で見ない
あとは条件を合わせ技で見ないということですね。次のように複数の条件を一つのif文で判断してしまうと,そこにバグが入り込む可能性が高くなります。
private bool IsStopping1(Conditon conditon) { if (conditon == Conditon.Setting || conditon == Conditon.Stop || conditon == Conditon.Error) { return true; } return false; }
判断は可能な限り1つずつ行うのが,バグを少なくするコツです。