if文のネストが深くなり過ぎた時の対処法

最近、先輩に言われて画期的だったので、残しておく

 

以下のようなソースがあったとする

 

if ($expr1) {

  //expr1の時だけ判定出来るexpr2

  if ($expr2) {

  //expr2の時だけ判定出来るexpr3

   if ($expr3) {

   //3つの条件クリアした時にやる処理

    }

  }

}

 

 

ちゃんとしたIDEだとネスト深すぎる氏ねって出てくると思います。

本当は$expr1 && $expr2 && $expr3ってやりたいけど、未定義だったり、isset使いたくなかったりする場合でこういう風に書く場合があると思います

で、やるのが

if (!$expr1) {

  continue;

}

if (!$expr2) {

  continue;

}

if (!$expr3) {

  continue;

}

//3つの条件クリアした時にやる処理

 

という風に、上からだめだったら即終了としていくやりかた。

continueは設定によっては、飛ばす階層が違うので、要注意。

return T/Fでも代用する場合も。