🎯 什麼情境該想到我

當你「一個函式對『另一個模組』的資料興致勃勃、頻繁存取它的欄位與方法,反而很少碰自己所在類別的資料」的時候。

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

這味道是什麼徵兆:程式的一個基本原則是「把一起變化的東西放在一起」——資料與操作它的行為應該相鄰。當某函式花大半力氣在操弄別的物件的資料,代表它其實比較想待在那個物件裡。

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

  • 搬移函式(Move Function):把這個函式整個搬到它所依戀的那個類別去。
  • 提煉函式(Extract Function):若只有函式中一段對別人資料上心,先把那段抽出來,再搬過去。

判斷歸屬的常見準則:看這段碼用到「誰的資料最多」,就把它放到誰那裡。

🧪 我實際套用的紀錄

  • (待填)

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

  • 有些設計刻意把「行為」與「資料」分離(如某些策略/訪問者模式、把展示邏輯與領域資料分開),這種情況的「依戀」是有意為之,不算味道。
  • 若一段碼平均地用到好幾個模組的資料,就把它放到它「用最多資料」的那個模組。

🔗 相關工具