🎯 什麼情境該想到我

當你發現「程式各處都在對同一個特殊值(最常見的是 null,或某個代表『查無此人/預設客戶』的值)重複做相同的檢查與處理」的時候。

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

意圖:用一個「特例物件」把該特殊值的預設行為封裝起來(null 的情況即 Null Object 模式)。這樣呼叫端就能像對待一般物件那樣使用它,不必再到處寫 if (x == null) ...——把散落的特例處理集中成一個物件的固有行為。

小步安全進行:

  1. 為容器類別加一個「是否為特例」的檢查方法(如 isUnknown()),初期回傳固定值。
  2. 建立特例物件(如 UnknownCustomer),讓它的 isUnknown() 回傳 true,並讓來源在「查無」時回傳這個特例物件。
  3. 找出所有「檢查該特例值」的重複程式碼,逐一改用新的檢查方法。
  4. 對每一段特例處理,把它的預設回應搬進特例物件成為其方法(如特例客戶的名字固定回傳 “occupant”)。
  5. 每搬一段就執行測試,直到呼叫端不必再自行判斷特例。

🧪 我實際套用的紀錄

  • (待填)

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

  • 若各處對這個特殊值的處理其實各不相同(沒有共通的預設行為),封裝成單一特例物件反而不合適。
  • 只有一兩處檢查、不構成重複時,殺雞用牛刀。

🔗 相關工具