🎯 什麼情境該想到我
當你面對「if-else 巢狀好幾層」,得一路縮排讀進去才找得到真正的主要邏輯,而且分不清哪些是特例、哪些是正常流程的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:對每個「特例/異常狀況」在函式開頭就用一句提早 return(衛述句)把它擋掉,讓後面的程式碼專心表達正常流程。衛述句傳達的訊息是「這種情況不是本函式的重點,處理掉就閃人」,把巢狀結構攤平成一連串平行的檢查。
小步安全進行:
- 挑最外層的條件,把它改寫成衛述句:條件成立就直接 return(或丟例外)。
- 執行測試。
- 由外而內,逐一把其他巢狀條件也改成衛述句,每改一個就測一次。
- 全部攤平後,若有多個衛述句回傳相同結果,考慮用合併條件式收斂。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若 if 與 else 兩條路「地位相當、都是正常流程」(不是主線 vs. 特例),就不適合硬改成衛述句——那樣反而扭曲了對等的邏輯。
- 團隊若堅持「單一出口(single return)」規範,需先取得共識;本手法刻意採用多重 return。
🔗 相關工具
- 分解條件式 Decompose Conditional(另一種整理條件的手法,處理單一複雜條件)
- 合併條件式 Consolidate Conditional Expression(多個衛述句結果相同時可再合併)
- 重構