條件式常現於兩情境:兩分支皆屬正常行為、和一分支正常,另為異常。
在一正常一異常的情況,就可以用防衛敘句(提早 return),顯出異常情況非此函式的邏輯核心。

Replace Nested Conditional with Guard Clauses
flowchart TB
subgraph nested ["❌ 巢狀條件"]
direction TB
N1{條件 A?} -->|是| N2{條件 B?}
N2 -->|是| N3{條件 C?}
N3 -->|是| NR[核心邏輯]
N1 -->|否| NE1[處理 A]
N2 -->|否| NE2[處理 B]
N3 -->|否| NE3[處理 C]
end
subgraph guard ["✅ Guard Clauses"]
direction TB
G1{條件 A?} -->|否| GR1[return 處理 A]
G1 -->|是| G2{條件 B?}
G2 -->|否| GR2[return 處理 B]
G2 -->|是| G3{條件 C?}
G3 -->|否| GR3[return 處理 C]
G3 -->|是| GR[核心邏輯]
end# Before
def calculate_pay(employee):
if employee.is_retired:
if employee.age > 65:
return 0
else:
return employee.pension
else:
if employee.is_on_leave:
return 0
else:
return employee.salary
# After
def calculate_pay(employee):
if employee.is_retired:
if employee.age > 65:
return 0
return employee.pension
if employee.is_on_leave:
return 0
return employee.salary