複雑な条件式はそのまま書くと「何をチェックしているのか」が分かりにくくなります。実務では 関数化 や 早期return を使って読みやすく整理するのが定石です。
テクニック1:関数化して名前で意味を伝える
長い条件を直接書くより、関数にまとめて「何を判定しているか」を名前で表すと分かりやすいです。
def is_valid_age(age: int) -> bool:
return 0 <= age <= 120
def can_login(email: str, password: str, guest_login: bool) -> bool:
return (email and password) or guest_login
# 使用例
age = 25
if not is_valid_age(age):
print("年齢が不正です")
if can_login("user@example.com", "secret", False):
print("ログイン成功")
Pythonis_valid_age→ 「年齢が正しいかどうか」can_login→ 「ログイン可能かどうか」
→ 条件式を読む人が「何を判定しているか」をすぐ理解できる
テクニック2:早期returnでネストを減らす
複雑な条件を「ifの入れ子」で書くと読みにくいので、早めにreturnして処理を終わらせるとスッキリします。
悪い例(ネストが深い)
def process_user(age, is_member, has_invite_code):
if age >= 18:
if is_member or has_invite_code:
return "参加できます"
else:
return "参加できません"
else:
return "参加できません"
Python良い例(早期returnで整理)
def process_user(age, is_member, has_invite_code):
if age < 18:
return "参加できません"
if not (is_member or has_invite_code):
return "参加できません"
return "参加できます"
Python- 「ダメな条件」を先にreturnしてしまう
- 残った処理は「OKな場合」だけなので読みやすい
テクニック3:変数に条件を代入して説明的にする
age = 20
is_member = True
has_invite_code = False
is_adult = age >= 18
can_join = (is_adult and is_member) or has_invite_code
if can_join:
print("参加できます")
else:
print("参加できません")
Pythonis_adultやcan_joinのような説明的な変数を使うと、条件式の意図が一目で分かる
まとめ
- 関数化 → 「何を判定しているか」を名前で表す
- 早期return → ネストを減らして読みやすくする
- 説明的変数 → 条件の意味を明示する
👉 実務では「複雑な条件をそのまま書かない」ことが大事です。読みやすさを優先すると、後からコードを読む人(未来の自分も含む)が楽になります。

