🎯 什麼情境該想到我
當你看到「好幾個各自獨立的條件判斷,但它們的結果/動作其實完全一樣」的時候——一連串 if 各自 return 相同的東西,讀起來像是好多個檢查,其實是同一件事。
⚙️ 怎麼用(步驟 / 公式)
意圖:把一串「導向相同結果」的條件判斷,用邏輯運算子(&&、||)合併成單一條件,再提煉成一個有名字的函式。這樣做能明白宣告「這其實是一個判斷」,而不是好幾個彼此無關的檢查。
小步安全進行:
- 確認這些條件式都沒有副作用(純判斷);有副作用要先處理。
- 用
||(其中之一成立)或&&(全部成立)把相鄰、結果相同的條件合併成一個判斷式。 - 執行測試。
- 對合併後的條件施以提煉函式,取一個說明「為什麼」的名字(如
isNotEligibleForDisability())。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若這些條件本來就代表「彼此獨立、只是碰巧結果相同」的不同判斷,合併會抹掉它們的差異,反而誤導——此時不該合併。
- 條件式帶有副作用時,合併可能改變執行行為,需先移除副作用。
🔗 相關工具
- 分解條件式 Decompose Conditional(反過來,處理單一但過於複雜的條件)
- 以衛述句取代嵌套條件式 Replace Nested Conditional with Guard Clauses(合併後常可寫成一句提早 return 的衛述句)
- 提煉函式 Extract Function(把合併後的條件包成具名判斷)
- 重構