こんにちはヤマピーブラック(@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のブロックに書いてしまいましょう。
【プログラミング】頭でっかちなコードはNG【まとめ】
- 長い処理はelseのブロックの中に書く(頭でっかちなコードは避ける)
いかがでしょうか。
次回はBooleanを使った可読性の上げ方について書いていこうと思います。