🎯 什麼情境該想到我
當你發現「一個函式一直在引用另一個類別/模組的資料,反而很少用到自己家的東西」的時候,或想把彼此相關的函式聚攏、減少模組之間的耦合。
⚙️ 怎麼用(步驟 / 公式)
意圖:把函式搬到它「更該待的地方」——通常是它最常存取的資料所在的類別或模組。好的模組化是讓相關的程式碼聚在一起。
小步安全進行:
- 檢查這個函式在目前脈絡下用到的所有元素(變數、其他函式、欄位),想清楚它們是否也要一起搬。
- 確認函式沒有多型(覆寫/被覆寫)情況;有的話要先評估。
- 把函式複製一份到目標類別/模組,調整成適應新家(引數、命名)。
- 分析原函式:讓它變成一個委派——直接呼叫新位置的函式,或就地測試。
- 執行測試。
- 決定要不要把原函式徹底移除(改所有呼叫端指向新位置),再測一次。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 若函式同時大量用到新舊兩邊的資料,搬過去不見得更好,先想清楚「它到底屬於誰」。
- 若牽涉繼承體系中的多型函式,貿然搬動會破壞覆寫關係。
- 純為了「看起來整齊」而搬、卻增加參數傳遞的複雜度,就別搬。
🔗 相關工具
- 搬移欄位 Move Field(函式與它常用的資料常常要一起搬)
- 提煉函式 Extract Function(有時先提煉出一段,再把它搬到更合適的地方)
- 重構