##if 〜 elseのelseが嫌い
条件分岐でif 〜 else
を使う機会がありますが、
else
が不要な場合も多いです。
個人的な印象ですが、
else
があると、
コードが複雑な感じがします。
(else if
は、見たくもなくなる)
elseを使う場合は、
if 判定 {処理1} else {処理2}
で、処理1と処理2の処理内容が、
同レベルであるべきです。
そんな場合は、switch文の方が、可読性が高くなる場合もあります。
##elseが不要な例
func 合格判定(判定値) Bool {
if 判定値 >= 合格基準 {
return true //合格
} else {
return false //不合格
}
}
この処理例では、プログラムとしては問題ありませんが、
「合格の判定処理」なため、
合格
をメイン処理とし、
不合格
をサブの処理とするべきです。
##elseを取り除いた修正案
func 合格判定(判定値) Bool {
if 判定値 < 合格基準 {
return false //不合格
}
return true //合格
}
合格判定
という処理において、
不合格
は、ネガティブな要素のため、
合格の手前に、振るい落とすように不合格のif文を設けます。
そして、最終的に処理が進めば、合格
となるようにします。
変更案の方が、「合格の判定処理」として、
分かりやすいコードになったかと思います。
##else以外も
else if
や、if文判定時のor/and条件なども、
詰め込むとコードを書いた人にしか分からない=可読性の低下
になるため、
複数の単純なif文に分解したり、判定条件を別メソッドにすると、
コードを読む人が分かりやすい=可読性の向上
になります。
##可読性が高いコードを書くには
自分で書いたコードを客観的に眺めて、
分かりにくいコードになっていないか確認する癖をつけると、
一緒にプロジェクトをやっているメンバーにも、
半年後に改修を担当する自分にも、
優しいコードを書けるようになると思います。
##追記1
switch(true) イディオム考察
分岐先の処理が同レベルであることを示す、良い手法かと思いますが、
プロジェクトメンバーが理解しやすいか、同意を得られるか確認した方が良さそうです。