if else文で気を付けるべき事
if構文には、単一の処理を行うif文、条件式の結果によって処理を使い分けるif-else文、そして3つ以上のルートに別れて処理を使い分けられるif-else if-else文があるが、今回はif-else if-else構文で自分がミスしやすい点をまとめた。
まず、構文の構成。
if (条件式①) {
処理①
} else if (条件式②) {
処理②
} else if (条件式③) {
…
else {
最終処理
}
if-else if-else構文では、最初の条件式①に合致すれば処理①を行い、そうでなければ条件式②の判定に以降、そこで合致すれば処理②を行い…と行ったパターンを最後のelse ifブロックまで行う。
ここで大事なのが、最後のelseについてだ。
最後のelseは中身が空(要するに全てfalseなら何も実行しない)の場合はelseごとブロックを省略できるのだが、ここでelseだけ中途半端に残してブロックだけ省くとコンパイルエラーになる。elseの意味を考えてみれば、「もし合致しなければ…」で指示が終わってしまっているので当然だが、「最後は削れる!」とうろ覚えでやってしまいがちなので気をつけたい。
また、これはif-else if-else構文に限ったことではない(ループ文とか)のだが、もしブロック内でしか使わない変数があるなら、スコープの観点からできる限りブロック内で宣言するべきなのにも気を付ける。あわせてif文中の変数が構文を抜けたら使用不可になるのにも気を付ける。 先程と似たような問題だが、変数のスコープに気が行かないのは初学者にありがちな気がするので始めの内は特に気を付けたい。