ガード節とアーリーリターン
目次
春の陽気に心躍り、
新緑が色濃く映える今日この頃。
皆様いかがお過ごしでしょうか。
GW中にプログラマの必読書と言われる
リーダブルコードを読みました。
なかなか意識していなかったことばかり書いてあるもんで
大変ためになりました。(少しずつ実務にも活かしていきたい)
そのなかでガード節というものにより
とてもスマートに処理がまとまっていて
できる男のコードはこうでなくっちゃなと感じたので
今回はそのガード節に焦点を当ててみたいと思います。
ガード節、アーリーリターンとは
if文やfor文など関数の中で処理の対象外とする条件をガード節。
if文の条件に引っかかったものを即座にreturnやcontinueなどで処理を飛ばす方法をアーリーリターンと言います。
用法
変数foo,bar,bazに値が入っているとき
TRUEを返すプログラムがあるとします
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function var_check($foo, $bar, $baz) { $result = boolean; if ( isset($foo) ) { if ( isset($bar) ) { if ( isset($baz) ){ $result = true; } else { $result = false; } } else { $result = false; } } else { $result = false; } return $result; } |
気が滅入るくらい見にくくなっていますね
このコードにガード節、アーリーリターンを使ってわかりやすく処理を書くと
1 2 3 4 5 6 7 |
function var_check($foo, $bar, $baz) { if ( !isset($foo) ) return false; if ( !isset($bar) ) return false; if ( !isset($baz) ) return false; return true; } |
こうなります。
関数内のネストも浅くなり
かなり整頓されて可読性の高いコードになりましたね!
関数で複数のreturn文を使ってはいけないと思っている人がいる。アホくさ。関数から早く返すのはいいことだ。
とリーダブルコードにも書いてあります。
反面、ガード節がまとまりなく関数内に散乱していると
却って可読性を下げてしまうことにつながります。
容量用法を守って正しくお使いください。
ネストは浅く、志は高く。
ありがとうございました。