簡體   English   中英

Eclipse中的重構工具

[英]Refactoring tool in Eclipse

我的需求非常簡單:我想在整個Eclipse項目中通過調用objClass2.method2()來更改方法調用objClass1.method1() 不幸的是,我找不到能夠做到這一點的插件。 你能幫我嗎?

編輯:

為了更准確, objClass1是第三方庫的一部分,所以我需要更改方法調用。 我不能從方法定義開始。 當我右鍵單擊method1調用時,我的“重構”菜單中沒有“重命名”選項。

我不想更改或重命名我的方法。 我想在整個項目中用另一個電話交換一個電話。

需要做的事情的一個例子:

在重構之前:

Injector injector=Guice.createInjector(new IContactModule());

重構后:

Injector injector=IContactInjectorSingleton.getInjector();

這需要在我的項目中完成幾個點。

你要求的是沒有重構。 重構被定義為“在不改變代碼行為的情況下改變代碼的改變”。 在這個意義上,重命名一個類或重命名一個方法是一個重構(你改變代碼,但程序與以前一樣)。 但你建議不保留代碼的行為,所以永遠不會有“重構”。

當然,人們可以編寫一個能夠以或多或少安全的方式執行所需文本更改的插件。 但這只會在非常具體的情況下工作(如果你的新方法需要一個舊的不需要的參數怎么辦?如果有多個方法具有相同的名稱但不同的參數怎么辦?...)。 所以我不相信這樣的插件存在,開發這樣的插件也沒什么意義。

只需右鍵單擊類/方法名稱,然后選擇“重構”>“重命名”。

編輯:

為了更准確,objClass1是第三方庫的一部分,所以我需要更改方法調用。 我不能從方法定義開始。 當我右鍵單擊method1調用時,我的“重構”菜單中沒有“重命名”選項。

因此我建議你簡單地做一個替換:

搜索菜單>文件,鍵入舊名稱,選擇搜索的上下文(“包圍項目”),單擊替換並鍵入新名稱。

EDIT2:

從您添加到問題的示例中我認為手動替換,使用我剛才建議的工具,這是最好的方法。 這是一個復雜的問題,正如@Arne指出的那樣,所以最好以受控方式制作它。 此外,我懷疑需要建立一個插件是如此頻繁的操作。

您可以通過選擇方法名稱來使用eclipse重構。 右鍵單擊上下文菜單或Alt-Shift-R,在Rename-Dialog中,可以使用預覽對話框,在一個位置顯示所有建議的更改。

首先,將objClass1.method1()的主體移動到objClass2.method2() ,並讓method1簡單地調用method2 它可能不像那樣“簡單”,例如,例如, method1使用Class1字段,在這種情況下,您可能應該將this作為新方法的參數包含在內,並且可能使用字段的getter。 如果在執行此操作之前可以使方法保持靜態,則可以更輕松地避免這些問題。 無論如何,進行轉換,因此method1只是調用method2 現在使用內聯方法重構,使method1走開。 你完成了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM