勉強したはずなのに早期リターンの書き方の方がいいよと指摘されたときにそれなんだっけってなったので(やばい)思い出しがてらメモです。リーダブルコードにも書いてあって勉強した気がしますが記憶が抹消されていました。
#早期リターン(ガード節)とは
メソッドなどで処理の終端に到達する前に、条件を満たしたときにはすぐにreturn や continue/break で抜ける方法です。
#書き方
age
データがある場合に年齢を判断して乳幼児、未成年、成人を返す関数があるとします。
.js
function checkAge(age) {
let result;
if (age != null) {
if (age == 0) {
result = "乳幼児"
} else if (age < 20) {
result = "未成年"
}
else if (age >= 20) {
result = "成人以上"
}
} else {
result = "年齢情報なし"
}
return result
}
正常系コードがネストの深い位置にあります。今回は簡単な例ですが、処理がもっとあった場合など、他の人が処理を追う時にパッとはわかりづらい。。。
早期リターンの書き方で書いてみましょう。
.js
function checkAge(age) {
if (age == null) {
return "年齢情報なし"
}
if (age == 0) {
return "乳幼児"
}
if (age < 20) {
return "未成年"
}
if (age >= 20) {
return "成人以上"
}
}
スッキリかけました。どの場合になにを返すのかわかりやすいです。
また、nullの判定を最初に持ってきています。もっと細かい処理があったとしてもnullの場合は後述の判定をすることなくすぐに抜けることができるので余計なコードを読み込まなくなります。