🎯 什麼情境該想到我
當你「要做一個小改動,卻得同時到很多不同的類別或檔案裡各改一點」的時候——而且很容易漏掉其中一處。
⚙️ 怎麼用(步驟 / 公式)
這味道是什麼徵兆:某一個決策或概念被打散、灑遍程式各處(像霰彈打出去的碎片),導致每次改它都要四處奔波,還很難確定改全了。這與「發散式變化」相反:霰彈是「一種變化、多處要改」。
通常用哪些重構手法對治:
- 搬移函式(Move Function)/搬移欄位(Move Field):把散落各處、屬於同一件事的碼與資料集中到同一個模組。
- 函式組合成類別(Combine Functions into Class)/組合成轉換(Combine Functions into Transform):把處理同一資料的相關函式聚在一起。
- 內聯函式/內聯類別(Inline Function / Inline Class):若碎片本就過度切割,先合回一處再重新切得更合理。
目標:讓每一種變化都對應到「一個要改的地方」。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 集中之後要小心別讓那個模組吸收太多職責,反而變成「發散式變化」或「過大類別」——兩者要取得平衡。
🔗 相關工具
- 發散式變化 Divergent Change(一體兩面的對照味道)
- 內幕交易 Insider Trading(碎片散落常伴隨模組間過度耦合)
- 重構