🎯 什麼情境該想到我
當你「兩個模組(類別)之間私下互通太多彼此的內部細節,關起門來交換大量資料」的時候——它們對彼此的了解遠超過該有的程度。
⚙️ 怎麼用(步驟 / 公式)
這味道是什麼徵兆:模組之間過度熟悉彼此內部,會堆出高得驚人的耦合,讓任何改動都得同時顧到兩邊。作者比喻:模組間難免要交流,但要把這種「交易」降到最低、攤在檯面上。
通常用哪些重構手法對治:
- 搬移函式(Move Function)/搬移欄位(Move Field):把糾纏的資料與行為重新分配,減少跨模組的私下往來。
- 隱藏委託關係(Hide Delegate):讓一個模組不必直接知道另一個的內部,改透過中介。
- 以委託取代子類 / 以委託取代父類(Replace Subclass/Superclass with Delegate):若耦合源自繼承(子類過度依賴父類內部),改用委託拉開距離。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 模組間本來就需要協作,適度的介面往來是正常的;味道指的是「過度」與「私下走內部」。
🔗 相關工具
- 依戀情結 Feature Envy(對別人資料過度上心的近親味道)
- 訊息鏈 Message Chains/中間人 Middle Man(同屬耦合過度的一族)
- 被拒絕的遺贈 Refused Bequest(繼承造成的過度耦合)
- 重構