JBuilder 2005 提供豐富的重構操作,超越基本的重命名/移動/抽取方法。本文深入解析五大進階重構場景:**Import 優化、自動異常捕獲、部署描述檔同步重構、EJB 安全重構、委派方法生成**。
路徑:`Project → Project Properties → Java Formatting → Imports`
| 設定 | 功能 | 建議值 |
|---|---|---|
| **移除未使用 Import** | 自動刪除無引用的 import 語句 | ✅ 啟用 |
| **Package Import Threshold** | 引用類別數 ≥ 閾值時改用 `pkg.*`,否則單獨 import | 5-10 (視團隊習慣) |
| **Always Import Classes** | 強制單獨 import 每個類別 (等同閾值無限大) | ❌ 除非團隊強制規範 |
專案節點右鍵 → `Format Package...` → 勾選 `Optimize imports` → OK,全專案統一風格。
try {
FileInputStream fis = new FileInputStream("D:\\1.txt");
fis.read(buf);
} catch (Exception ex) { } // 吞掉所有異常,零診斷價值
try {
fis = new FileInputStream("D:\\1.txt");
fis.read(buf);
} catch (FileNotFoundException ex) {
// 處理檔案不存在
} catch (IOException ex) {
// 處理讀寫異常
}
finally {
if (fis != null) {
try { fis.close(); }
catch (IOException ex) { /* 記錄關閉失敗 */ }
}
}
`Ctrl+Shift+C` 比 `Ctrl+J` 模板更優:自動識別所有受檢異常、生成規範捕獲順序、避免遺漏。養成「先寫核心邏輯,再重構異常處理」習慣。
Struts `struts-config.xml`、Spring `applicationContext.xml`、Hibernate `*.hbm.xml` 中的類名字串,手工修改極易遺漏。JBuilder 直接支援在 XML 編輯器中對 `type`/`class` 屬性值進行 **Rename Class 重構**:
EJB 涉及 Bean 類、Home/Remote/Local 介面、部署描述檔、客戶端 Stub 等多重關聯。在編輯器/UML 中重構會彈出警告:
WARNING: You are refactoring an EJB file. This may require that you change some source code and the deployment descriptor by hand. We recommend using the EJB designer for most refactoring scenarios.
**正確做法**:雙擊 `.ejb` 檔開啟 **EJB Designer** → 在設計器樹狀視圖中對 Bean/介面重命名 → JBuilder 自動同步所有關聯成品。
// A 含 B,B 有 foo(),C 調用需 A→B→foo()
A a = new A();
a.b.foo(); // 違反迪米特法則,耦合內部結構
public void foo() { b.foo(); } // 簽名相同,內部轉發
A a = new A();
a.foo(); // 簡潔、封裝內部結構、易於未來替換 B 實作
JBuilder 2005 的重構引擎雖屬前 IDEA/Eclipse 重構成熟期產品,但其 **Import 優化、異常捕獲、部署描述檔同步、EJB 設計器整合、委派生成** 五大特色功能,至今仍是現代 Java IDE 重構能力的標竿參照。