🎯 什麼情境該想到我

當你「一個類別只有欄位加上 getter/setter,卻沒有任何真正的行為,別人都是把它的資料拿出來、在外面自己處理」的時候。

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

這味道是什麼徵兆:純資料類別常是「行為被放錯地方」的訊號——操作這些資料的邏輯散落在其他類別裡(往往伴隨依戀情結)。物件導向的精神是把資料與操作它的行為放在一起。

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

  • 找出別的地方「拿了這個物件的資料在做的事」,用搬移函式(Move Function)把那些行為搬進來;必要時先提煉函式再搬。
  • 封裝集合(Encapsulate Collection):若欄位是集合,別直接暴露,改提供受控的增刪方法。
  • 檢視 setter:不該被外部隨意改的欄位,用移除設值函式收斂。

🧪 我實際套用的紀錄

  • (待填)

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

  • 純資料結構有其正當用途:例如某些 DTO、值物件、函式間傳遞的中間結果,本就該是「只有資料」。
  • 剛從別處提煉出來、行為尚未搬入的類別,短暫是純資料是正常過渡。

🔗 相關工具