🎯 什麼情境該想到我

當你看到「用一個布林(或列舉)旗標參數去決定函式要走哪種行為」的時候——呼叫端寫著 setDinner(true),光看呼叫根本猜不出 true 是什麼意思。

⚙️ 怎麼用(步驟 / 公式)

意圖:旗標參數會隱藏函式之間的行為差異,也讓呼叫端難以讀懂。把「靠旗標切換的一個函式」拆成幾個各自意圖明確的具名函式,讓呼叫端直接呼叫它要的那一個。

小步安全進行:

  1. 針對旗標的每一種取值,建立一個明確命名的專用函式(如 deliveryDate 拆成 regularDeliveryDaterushDeliveryDate)。
  2. 讓每個新函式內部帶著固定的旗標值去呼叫原函式(或直接內嵌對應那條分支的邏輯)。
  3. 找出呼叫端,依它傳入的旗標值,逐一改呼叫對應的專用函式。
  4. 每改一處就執行測試;全部改完後,若原函式已無人使用可考慮移除。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 若旗標會有多個、組合起來爆炸成一堆函式,拆分反而失控——此時保留參數(或改用參數物件)較合理。
  • 當旗標值是在執行期才動態決定、無法在呼叫端寫死時,拆成具名函式的好處會打折。

🔗 相關工具