先日受けたコードレビューについて
「IF文は”早期return”で読みやすくなる」と学んだので、こんなコードを書いた
書いたコード(早期returnを意識)
ーーーーーーーーーーーーーーーーーー
function todaysActivity(isSunny) {
if (isSunny) {
console.log("外で遊ぶ!");
return;
}
console.log("家で遊ぶ!");
}
ーーーーーーーーーーーーーーーーーーー
このコードについてレビューで指摘されたこと、、
対の関係が見えない
→ 「晴れ vs 雨」の排他制御であることが伝わりにくい
共通処理が書きにくい
→ 両方のパターンで実行したい処理を2回書く必要がある
と指摘されたので以下のように修正
パターン1: 三項演算子
三項演算子を使って
ーーーーーーーーーーーーーーーーー
function todaysActivity(isSunny) {
const message = isSunny ? "外で遊ぶ!" : "家で遊ぶ!";
console.log(message);
// 共通処理
eatSnack();
}
ーーーーーーーーーーーーーーーーーー
パターン2: if/else
if/elseを使って
ーーーーーーーーーーーーーーーーー
function todaysActivity(isSunny) {
if (isSunny) {
console.log("外で遊ぶ!");
} else {
console.log("家で遊ぶ!");
}
// 共通処理
eatSnack();
}
ーーーーーーーーーーーーーーーーー
結局パターン1で書いてマージされたけど
確かにこの方が排他制御の意図がわかりやすくて、共通部分を書く必要が後から出てきた時も1回で済むので合理的や