readable codecapter7
TRANSCRIPT
制御フローを読みやすくするために
リーダブルコード 第7章読書メモ 同期との勉強会用
制御フローとは通常ソースコードは上から下へ読まれていくもの
ただし、ifやswitchなどの条件分岐や、forやforeach, whileなどのループがあると処理の一部が飛ばされたり、一定の間ループしたりと流れが少し変わる
少しならいい。ただ、それが多用されると時に大変読みにくいコードになってしまう
ね、こういうの嫌でしょ
制御フローを書く上で気をつけられること
❶条件式の並び順に気を使う(引数、ブロック)
❷三項演算子を使う時に考えること
❸do/whileはできるだけ避ける
❹条件に該当しないものは、早く返す
❺ネストを浅くするやり方
❶条件式の並び順に気を使う
引数の並び順
右:調査対象 左:比較対象
なぜなら、英語は重要なものが先にくるから例) you are older than your sister.
❷条件式の並び順に気を使うとりわけif/elseブロックの並び順について
基本的に、条件は否定よりも肯定を使う
単純な条件を先に書く(elseの存在がわかりやすくなる)
関心を引く条件、目立つ条件を先に書く
とはいえcase by case
❸三項演算子を使う時に考えられること
三項演算子条件 ? true : false ;
if文が一行に収まる。が、分かりにくい
三項演算子は、それによって簡潔になる時だけ使うように
行数を短くすることよりも、他人が理解し易い方が大事!
do/whileはできるだけ避けるdo {式} while (条件) ループ
再実行するための条件が下にあるため、コードを2回読む手間
だいたいwhileループで普通に書けるから、わざわざdo while 使う必要ない
doの中にcontinueがあると余計に紛らわしくなる!
ソースはリーダブルコードp90,91を参照
該当しないものは早く返す
単純な処理はコードの上部で早めにreturnしてあげる。
「ガード節」を使っていきましょう
ネストを浅くするやり方
ネストが増える仕組み (p94参照)
for()の時はcontinueする
ネストしているとコードを追うのに集中力が必要になってくる。
そうなると「で、結局この処理何がしたいんだっけ」と高レベルの流れを見失ってしまう
実行の流れを追えるような書き方をしましょう