🎯 什麼情境該想到我

當你「一個物件的某個(或某幾個)欄位,只在特定情況下才被賦值,其他時候都是空的」的時候——讀碼的人得不斷猜「它現在到底有沒有值」。

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

這味道是什麼徵兆:物件裡總是空著、只在某個演算法執行時才短暫有值的欄位,非常令人困惑——因為你直覺以為欄位隨時該有意義。這些欄位通常是某段複雜計算的中間狀態,卻被硬塞進物件的長期狀態裡。

通常用哪些重構手法對治:

  • 提煉類別(Extract Class):把這些成群的暫時欄位與操作它們的邏輯,抽成一個專責的類別,讓它們有自己的家。
  • 引入特例(Introduce Special Case / Null Object):針對「欄位沒值」的情況提供一個特例物件,取代到處的空值判斷。
  • 搭配搬移函式把只在該情境用到的行為一起搬過去。

🧪 我實際套用的紀錄

  • (待填)

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

  • 有些欄位天生就是選填(optional)且語意清楚,不算此味道;重點在「令人困惑的、演算法中間狀態」。

🔗 相關工具