[英]Method refactoring in Eclipse
我嘗試在Eclipse IDE(JDT)中執行以下重構步驟,但找不到所需的重構,並且無法記住所有步驟的名稱。 我在SourceMacking上檢查了重構,但找不到正確的重構。
讓我們以以下情形為例:
class A {
method(B b) {
doSomethingWithA();
b.doSomethingWithB();
}
[...]
}
class B {
[...]
}
1)使方法靜態 (缺少重構名稱?):
class A {
static method(A a, B b) {
a.doSomethingWithA();
b.doSomethingWithB();
}
[...]
}
class B {
[...]
}
2) 移動方式:
class A {
[...]
}
class B {
static method(A a, B b) {
a.doSomethingWithA();
b.doSomethingWithB();
}
[...]
}
3)轉換為實例方法 :
class A {
[...]
}
class B {
method(A a) {
a.doSomethingWithA();
doSomethingWithB();
}
[...]
}
因此,歡迎任何知道在Eclipse中逐步執行此操作的人或知道重構名稱的人。 目標是為每個步驟都提供IDE支持。
不幸的是,Eclipse的重構功能不如其他IDE(例如Jetbrains的IntelliJ )完整。 我將提供有關如何執行IntelliJ和Eclipse請求的每個重構的說明。
使用IntelliJ
使用Eclipse
將方法設為靜態:Eclipse不直接支持它,但是我們可以使用另外兩個重構來實現。
1.1。 介紹間接
結果
public static void method(A a, B b) { a.method(b); } public void method(B b){ doSomethingWithA(); b.doSomethingWithB(); }
1.2。 排隊
結果
public static void method(A a, B b) { a.doSomethingWithA(); b.doSomethingWithB(); }
在了解到重構被稱為“轉換為實例方法”之后,我搜索了Eclipse JDT的錯誤數據庫,發現了一個壞消息:
因此,基本上,這是一個無需解決的功能,無人問津,因此也許我該改用IntelliJ了。 我必須考慮一下……。
Emond Papegaaij在Bug 118032的討論中建議了以下解決方法:
一個簡單的解決方法是創建靜態方法,從要變為靜態的方法中調用此靜態方法,然后內聯該方法調用。 這在4.3.1中對我有效。
這很有趣,但同樣不會自動重構,並且首先會破壞重構的目的。 添加某人自己的代碼會導致失敗的可能性,並且需要重新運行測試套件,從而導致無法安全地重構遺留代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.