| 類別 | 功能 | 典型場景 |
|---|---|---|
| 物理結構 | Rename、Move | 類/方法/變數更名、跨套件移動類 |
| 類邏輯結構 | Convert Anonymous/Nested Type、Push Down/Pull Up、Extract Interface、Use Supertype | 匿名類轉頂層類、欄位/方法上下移動、介面萃取、父類型替換 |
| 類內部邏輯 | Extract Method/Local Variable/Constant、Inline、Encapsulate Field、Change Method Signature | 長方法拆分、魔術數常數化、封裝欄位、修改方法參數/返回型別 |
// 原始碼
for (int i=0; i
選中內層邏輯 → Extract Method → 命名 addProperty → 參數自動推導 (Properties, String) → 生成:
private static void addProperty(Properties props, String s) {
StringTokenizer st = new StringTokenizer(s, "=");
if (st.countTokens() == 2) props.setProperty(st.nextToken(), st.nextToken());
}
st.nextToken() → Extract Local Variable → 命名 key。"-D" → Extract Constant → 命名 DEFINE。private static final String DEFINE = "-D"; 並替換所有引用。public String name; → Encapsulate Field。| 陷阱 | 對策 |
|---|---|
| 重命名未勾選 Update references | 永遠預設勾選,或使用 Preview 確認 |
| Move 類後丟失 serialVersionUID | 重構不動靜態欄位,手動確認 |
| Extract Method 導致變數作用域錯誤 | 預覽檢查編譯錯誤標記 |
| Change Method Signature 破壞呼叫端 | 先在呼叫端新增重載、逐步遷移,最後刪除舊簽名 |
| 大規模重構無測試保護 | 先補單元測試,綠燈後再重構 |
Eclipse 重構工具是「自動化的程式碼整形外科醫生」。熟練掌握 Alt+Shift+R/M/L/C/E 等快捷鍵,配合 Preview 與測試保護,能讓你在重構時「大膽假設、小心求證」,將維護成本降至最低。建議將重構納入日常開發流程:小步提交、持續重構、拒絕大爆炸式重寫。