🎯 什麼情境該想到我
當你發現「一個欄位其實比較常被另一個類別存取,或它在概念上更該屬於別的類別」的時候,或每次修改某資料時,總要牽動另一個類別一起改。
⚙️ 怎麼用(步驟 / 公式)
意圖:資料結構是軟體的骨架,欄位放對地方能讓程式更好懂、更好改。把欄位搬到「更常存取它、或概念上更該擁有它」的類別。
小步安全進行:
- 確認來源欄位有被良好封裝(有取值/設值方法或存取器);若沒有,先做封裝欄位。
- 執行測試。
- 在目標類別建立對應欄位與存取方法。
- 確保來源物件能取得目標物件(有參考可指向它)。
- 調整來源的存取器,讓它改為委派到目標物件的欄位。
- 執行測試。
- 逐步把使用端改為直接存取目標,最後移除來源欄位。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 欄位未封裝時直接搬會很痛;先做封裝欄位再搬。
- 若來源物件沒有通往目標物件的參考,搬移成本會變高,需先建立關聯。
- 若兩邊都頻繁用到,硬搬只是把耦合換個方向,先評估。
🔗 相關工具
- 搬移函式 Move Function(欄位常和使用它的函式一起搬)
- 提煉類別 Extract Class(若一群欄位總是一起搬,也許該獨立成新類別)
- 重構