エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

プログラミングで、elseを使う罠【749日目】

elseと使ったコード

if ($x == 1) {

} elseif ($y == 2) {

} elseif ($z == 3) {

} else {

}

動作的には、前の条件が正しくなかった場合、次の判定にいくわけですが、
各動作を可視化するために、あえてelseを使わずコードを変えると以下のような条件になります。
(上と下のコードは厳密には同じではありません。判定回数など動作は違います)

elseを使うとどんな判定する?

if ($x == 1) {

} 
if (!($x == 1) && $y == 2) {

}
if (!($x == 1) && !($y == 2) && $z == 3){

}
if (!($x == 1) && !($y == 2) && !($z == 3)) {

}

このように前の条件を引き継いでいると考えてif文を読む必要があります。

$xが1じゃないときにしか、判定が行われない
else文を続けると、
$xが1じゃないときにしか、2番目の判定が行われない
$xが1じゃなくて、さらに$yが2じゃないときにしか、3番目の判定が行われない
$xが1じゃなくて、さらに$yが2じゃなくて、$zが3じゃないと、3番目の判定が行われない
このように、下層に行くほど条件が複雑になっているというのを表現したかったので、こう書きました。 

そう考えると、if文たくさんや、elseが続いているコードの恐ろしさに気づけるかもしれません。
elseは便利だけど気をつけて使おうね!