どうも。今回はリーダブルコードの第7章:理解しやすいフローについて簡単にまとめておきたいと思います。
大前提として、各種条件やループなどの制御フローがない方がコードは読みやすくなります。なぜならプログラムが突然他の場所で動作したり、枝分かれすると途端に理解しにくくなってしまうからです。
と言うわけで今回は、そういったコードの制御フローを理解しやすくするためのコツについて簡単にまとめておきたいと思います。
結論から言うと、「制御フローはできるだけ自然に。読み手が読み返したりする必要がないように配慮する」です。
【リーダブルコードまとめ】第7章:理解しやすい制御フロー
比較では、変化する値を左へ、安定した値を右へ
比較する際には、「変化する値を左」、「安定した値を右」へ配置するのがポイントです。なぜなら、この並び順の方が、理解しやすいことが多いからです。
例えば以下のコードであればどっちの方が理解しやすいでしょうか?
コード
if(length >= 10)
または
if(10 <= length)
最初の方が読みやすいと思います。これはなぜかというと、日本語に直してみてもわかりやすいからです。最初のコードはもし長さが10以上ならと素直に読めますが、後者の場合は、もし10以下の長さならと少し逆説的です。
素直に読みやすい条件分岐を書くように注意しましょう。
if / else のブロックを適切に並び替える
if / else のブロックは基本的に真、偽の順番を適切に変えることが大切です。なぜなら条件によって、読みやすい順番というのが違ってくるからです。
コード
if(a == b)
{ #第1のケース }
else
{ #第2のケース }
end
if(a != b)
{ #第2のケース }
else
{ #第1のケース }
end
基本的には以下の3つの項目に従って、どちらの書き方を採用するか考えます。
- 条件は否定よりも肯定を使ったほうがわかりやすくなる
- 単純な条件を先に書くことでif / else が同じ画面に表示されるのでみやすくなる
- より重要な条件を先に書く
三項演算子はほどほどに
ちなみに三項演算子をあまり多く使いすぎると読みづらい処理になってしまうことがあるので、ほどほどにします。
ネストさせすぎない
ネストはなるべく浅くするようにします。なぜならネストが深くなりすぎると、理解しにくいコードになってしまうからです。
ネストを削除できるように工夫してください。