こんにちはヤマピーブラック(@yamapyblack)です。

前回の記事で、ネストを減らすためには早めのリターンが大事だと書きました。
前回記事はこちら↓
【プログラミング】ネストの減らし方 〜可読性UPのシンプルな原則〜

では、リターンできない場合はどうやって可読性を上げればいいのでしょうか。

【プログラミング】頭でっかちなコードはNG【可読性UPの方法】

以下のようなソースコードがあったとします。

if(...){
    処理A
    ...
    ...
    ...

    if(...){
        処理A-1
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...

    }else{
        処理A-2
        ...

    }

}else{
    処理B
    ...

}

うーん長いですね。

実はこれは頭でっかちなコードです。

これを以下のように書き換えてみましょう。

if(...){
    処理B
    ...

}else{
    処理A
    ...
    ...
    ...

    if(...){
        処理A-2
        ...

    }else{
        処理A-1
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...

    }
}

ifとelseのブロックの中身をひっくり返しました
ifの最初のブロックが短く、elseのブロックが長くなっています。
これで頭でっかちが解消されました。

頭でっかちとは、ifの最初のブロックが異常に長いコードのことです。

スポンサードサーチ

頭でっかちなソースコードはなぜ読みづらい?

で、これでなぜ可読性がよくなったのか?

ソースコードを読んでいて、ifが来ると「後でelseが来るな〜」と身構えた状態で読まなければいけません。
これを私は、脳にスタックすると読んでいます。

脳の中です

もう1回ifが来ると、もう1個脳にスタックされます。

スタックが多い状態でソースコードを読むことは、脳に負担がかかります。

「いつelseが来るんだろう」を頭の片隅に置いておきながらソースコードを読む。
これが脳に負担をかけ、読みづらいソースコードになるわけです。

もう1度、頭でっかちを改善したソースコードを見てみましょう。

if(...){
    処理B
    ...

}else{
    処理A
    ...
    ...
    ...

    if(...){
        処理A-2
        ...

    }else{
        処理A-1
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...
        ...

    }
}

処理Bはすぐに終わり、elseが来ます。
よって、スタックされた状態で読むソースコードの量はかなり短いです。

elseが来るとスタックは減る

したがって、長い処理はelseのブロックに書いてしまいましょう。

【プログラミング】頭でっかちなコードはNG【まとめ】

  • 長い処理はelseのブロックの中に書く(頭でっかちなコードは避ける)

いかがでしょうか。
次回はBooleanを使った可読性の上げ方について書いていこうと思います。