defcheck_access(age, is_member, has_ticket):# 年齢チェックif age >=18:# 会員チェックif is_member:# チケットチェックif has_ticket:print("入場OK(大人・会員・チケットあり)")else:print("チケットが必要です")else:print("会員登録が必要です")else:print("18歳未満は入場できません")
Python
問題点(解説付き)
問題
説明
ネストが3段
条件を追うのが大変(視線が右へ右へ…)
if と else が入り乱れて読みにくい
どの else がどの if に対応するか分かりづらい
条件が多いと拡張が大変
新しい条件を追加すると「また1段右にインデント」になる
結果の出力が多方向に分岐
どこで終わるかパッと見て分からない
After:平坦化(早期リターンで整理)
defcheck_access(age, is_member, has_ticket):# ① 条件を「ダメな場合」から順に処理するif age <18:print("18歳未満は入場できません")return# ←ここで関数終了ifnot is_member:print("会員登録が必要です")returnifnot has_ticket:print("チケットが必要です")return# ② すべて通過したらOKprint("入場OK(大人・会員・チケットあり)")