ガード節とは
例えば以下のように階層の深いif
条件分岐があったとします。
function hoge($a, $b, $c) {
if ($a === 'a') {
if ($b === 'b') {
if ($c === 'c') {
return 'is c';
} else {
return 'not c';
}
} else {
return 'not b';
}
} else {
return 'not a';
}
}
関数hoge
が何を返すか、簡単には理解できないと思います。
この関数はガード節を使って、以下のように書くことができます。
function hoge($a, $b, $c) {
if ($a !== 'a') {
return 'not a';
}
if ($b !== 'b') {
return 'not b';
}
if ($c !== 'c') {
return 'not c';
}
return 'is c';
}
条件を逆転させてreturnしているだけなのですが、かなり読みやすくなったのではないでしょうか。
実際のアプリケーションのコードはもっと複雑だと思いますが、エラー処理を早めにreturnするなどして、比較的簡単にリファクタリングできるので、皆さんもぜひやってみてください。