JavaScript - if文の入れ子(ネスト)の注意点
JavaScript では if 文を入れ子(ネスト)にすることができます。
ただし、書き方によっては可読性やメンテナンス性が悪くなり、 デバックもしにくくなります。
ここでは if 文を入れ子(ネスト)にする方法と注意点を紹介します。
入れ子(ネスト)のサンプル
次のサンプルコードは赤字の部分が入れ子になっている if 文です。
if (a > 10){
if (b > 1){
c = a;
} else {
c = b;
}
i++;
} else {
c = a - 1;
}
次のコードは、先程と全く同じロジックなのですが、 入れ子部分の『波括弧(中括弧){}』を記述していません。
上のコードと下のコード、どちらが読みやすいか比べてみてください。
下のコードは「i++;」の部分と、上の if 文の関係がわかりにくいですよね。もし「i++;」の部分が字下げされていると、else句の処理と誤解する可能性もあります。
if (a > 10){
if (b > 1)
c = a;
else
c = b;
i++;
} else {
c = a - 1;
}
このように、if 文を入れ子にする場合、 『波括弧(中括弧)』がないと可読性が悪くなります。
さらに、インデントを適切にしていない場合は、 処理と if 文の関係がわからなくなってしまいます。
入れ子(ネスト)にする際の注意点
if 文を入れ子(ネスト)にする場合は次の点に注意してください。
- 処理が1文でも必ず「波括弧(中括弧)」をつける。
- インデントを適切に行う
この点を守らないと、可読性・メンテナンス性が悪くなり、 デバッグの際に苦労することになります。
if 文が3層以上になるようなら、ロジックを見直す
入れ子(ネスト)が多くなればなる程、プログラムは読みにくくなります。
上のサンプルコードはif 文が2層のコードですが、 もしif 文が3層以上になるようなら、根本的にロジックを見直して、 入れ子が少なくなるようにしましょう。
フローチャート等でいったんロジックを整理すると、 根本的な解決策が見つかる場合が多いです。