使用Eclipse進(jìn)行java代碼重構(gòu)_第1頁
使用Eclipse進(jìn)行java代碼重構(gòu)_第2頁
使用Eclipse進(jìn)行java代碼重構(gòu)_第3頁
使用Eclipse進(jìn)行java代碼重構(gòu)_第4頁
使用Eclipse進(jìn)行java代碼重構(gòu)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、類型1 物理結(jié)構(gòu)1.Rename快捷鍵:alt+shift+r作用:Rename重構(gòu)的功能就是重命名Java元素。雖然可以通過手動(dòng)修改文件的文件名或其它Java元素的名稱,但這種方式不會(huì)更新與此Java元素相關(guān)聯(lián)的引用,用戶必須手動(dòng)查找和此Java元素相關(guān)的位置,然后進(jìn)行手動(dòng)修改。通過手動(dòng)修改名稱的方式,造成筆誤的可能性會(huì)太太增加。通過Eclipse提供的Rename的功能,Eclipse會(huì)自動(dòng)完成更新相關(guān)引用的操作。提示:非Java項(xiàng)目和Java文件等也可以通過重構(gòu)菜單的Rename進(jìn)行重命名。2.Move快捷鍵:alt+shift+v作用:Move的重構(gòu)和Rename的重構(gòu)類似,它可以把一

2、個(gè)Java元素從一個(gè)地方移動(dòng)到另一個(gè)地方,Move的重構(gòu)主要用來移動(dòng)一個(gè)類到不同的包下。首先選中一個(gè)Java文件,選擇Refactor菜單下的Move菜單項(xiàng)3.Change Method Signature快捷鍵:alt+shift+c作用:“Change Method Signature”重構(gòu)的功能是改變方法的定義,例如改變方法的參數(shù)名稱、類型和個(gè)數(shù)、返回值的類型,方法的可見性以及方法的名稱等。4.Convert Anonymous Class to Nested功能:“Convert Anonymous Class to Nested”重構(gòu)的功能是把匿名類改成內(nèi)部類,這樣同一個(gè)類的其它部分

3、也可以共享此類了。例如有例程1所示的類。例程1 KeyListenerExample.javapublic class KeyListenerExample Display display; Shell shell; KeyListenerExample() display = new Display(); shell = new Shell(display); shell.setSize(250, 200); shell.setText(A KeyListener Example); Text text = new Text(shell, SWT.BORDER); text.setBound

4、s(50, 50, 100, 20); text.addKeyListener(new KeyListener() public void keyPressed(KeyEvent e) System.out.println(key Pressed - + e.character); public void keyReleased(KeyEvent e) System.out.println(key Released - + e.character); ); shell.open(); while (!shell.isDisposed() if (!display.readAndDispatch

5、() display.sleep(); display.dispose(); public static void main(String args) new KeyListenerExample(); 在KeyListenerExample類有一個(gè)匿名類,實(shí)現(xiàn)了KeyListener接口,可以把這個(gè)匿名類改成內(nèi)部類,首先選擇匿名類,右鍵選擇Refactor的“Convert Anonymous Class to Nested”菜單,輸入內(nèi)部類的名稱,如圖6所示。圖6 “Convert Anonymous Class to Nested”對(duì)話框重構(gòu)后的結(jié)果是Eclipse為此創(chuàng)建了一個(gè)內(nèi)部類,

6、名稱為TestKeyListener,重構(gòu)后的代碼如例程2所示。例程2 重構(gòu)后的KeyListenerExample.javapublic class KeyListenerExample private final class TestKeyListener implements KeyListener public void keyPressed(KeyEvent e) System.out.println(key Pressed - + e.character); public void keyReleased(KeyEvent e) System.out.println(key Rel

7、eased - + e.character); Display display; Shell shell; KeyListenerExample() display = new Display(); shell = new Shell(display); shell.setSize(250, 200); shell.setText(A KeyListener Example); Text text = new Text(shell, SWT.BORDER); text.setBounds(50, 50, 100, 20); text.addKeyListener(new TestKeyList

8、ener(); while (!shell.isDisposed() if (!display.readAndDispatch() display.sleep(); display.dispose(); public static void main(String args) new KeyListenerExample(); 也可以通過“Convert Anonymous Class to Nested”對(duì)話框定義新生成的內(nèi)部類的可訪問性。5.Move Member Type to Top Level作用:通過“Move Member Type to Top Level”的重構(gòu)方式,可以把內(nèi)

9、部類改成非內(nèi)部類,并且重新創(chuàng)建一個(gè)新的文件,這樣其它的類就可以共享此類。例程2創(chuàng)建了一個(gè)內(nèi)部類TestKeyListener,現(xiàn)在可以通過“Move Member Type to Top Level”重構(gòu)的方式,把TestKeyListener放入一個(gè)單獨(dú)的類中。首先選擇TestKeyListener類,從右鍵菜單Refactor中選擇“Move Member Type to Top Level”,打開“Move Member Type to Top Level”對(duì)話框,如圖7所示。圖7 “Move Member Type to Top Level”對(duì)話框通過上面“Move Member Ty

10、pe to Top Level”重構(gòu),可以把內(nèi)部類改成非內(nèi)部類。提示:有些時(shí)候,重構(gòu)并不是一步完成的,可以一步一步重構(gòu),例如,首先把匿名類改成內(nèi)部類,再接著把內(nèi)部類改成非內(nèi)部類。類型2 類層次結(jié)構(gòu)1.Push Down作用:Push Down”重構(gòu)功能是把父類的方法和屬性移動(dòng)到所有的子類中,父類的方法可以選擇性的保留抽象方法。首先選擇父類,右鍵選擇Refactor菜單的“Push Down”菜單項(xiàng),可以通過“Push Down”對(duì)話框選擇重構(gòu),如圖8所示。圖8 “Push Down”對(duì)話框“Push Down”重構(gòu)在重新設(shè)計(jì)類的時(shí)候是非常有用的,它可以比較有較的改善類的繼承關(guān)系,清楚定義類的行

11、為。2.Pull Up作用:“Pull Up”重構(gòu)和“Push Down”重構(gòu)正好相反,它的作用是把方法和屬性移動(dòng)到其父類中去。選擇需要重構(gòu)的子類,從右鍵菜單選擇Refactor菜單的“Pull up”菜單項(xiàng),通過“Pull Up”對(duì)話框進(jìn)行重構(gòu),如圖9所示。圖9 “Pull Up”對(duì)話框提示:“Pull Up”重構(gòu)和“Push Down”重構(gòu)后可能會(huì)出錯(cuò),在使用此重構(gòu)的同時(shí),應(yīng)該先弄清楚某些方法中是否有引用到其它方法或?qū)傩浴?.Extract Interface作用:“Extract Interface”重構(gòu)能夠從一個(gè)已存在的類中提取接口,它可以從某個(gè)類中選擇方法,把這些方法提取到一個(gè)單獨(dú)的

12、接口中。選擇提取接口的類,右鍵選擇Refactor菜單的“Extract Interface”菜單項(xiàng),打開“Extract Interface”對(duì)話框,如圖10所示。圖10 “Extract Interface”對(duì)話框單元OK按鈕,將會(huì)提取TestInterface的接口,提取接口后,當(dāng)前選擇的類將會(huì)實(shí)現(xiàn)此接口。提示:只有公用方法才可以被提取為接口的方法。4.Generalize Declared Type作用:“Generalize Declared Type”重構(gòu)能夠改變變量、參數(shù)、屬性以及函數(shù)的返回值的類型,可以把這些類型改成其父類的類型。在Refactor菜單中選擇“Generaliz

13、e Declared Type”,如圖11所示。圖11 “Generalize Declared Type”對(duì)話框單擊OK按鈕,能夠把聲明的類型改成當(dāng)對(duì)話框中選擇的類型。5.User Supertype Where Possible作用:“User Supertype Where Possible”重構(gòu)能夠用某一個(gè)類的父類的類型替換當(dāng)前類的類型,選擇需要被替換引用的類。在Refactor菜單中選擇“User Supertype Where Possible”打開“User Supertype Where Possible”對(duì)話框,如圖12所示。圖12 “User Supertype Where

14、 Possible”對(duì)話框“Generalize Declared Type”重構(gòu)和“User Supertype Where Possible”重構(gòu)在面向接口編程方面是很有用的,可以把引用的對(duì)象盡可能用接口進(jìn)行實(shí)現(xiàn)。提示:“User Supertype Where Possible”重構(gòu)將替換其它類中的引用,要想看到重構(gòu)的效果,應(yīng)該找到其它類引用的位置,此操作不會(huì)修改當(dāng)前文件。類型3 類內(nèi)部結(jié)構(gòu)1.Inline快捷鍵:alt+shift+i作用:“Inline”重構(gòu)能用函數(shù)的內(nèi)容替換掉函數(shù)的引用。首先選擇函數(shù)的引用,在Refactor菜單中選擇“Inline”打開“Inline”對(duì)話框,如圖

15、13所示。圖13 “Inline”對(duì)話框單擊確定按鈕,Eclipse將會(huì)用方法實(shí)現(xiàn)的部分替換引用的部分,即當(dāng)前不采用方法調(diào)用的方式進(jìn)行操作。也可以選擇“All invocations”和“Delete method declaration”,Eclipse會(huì)替換掉所有引用方法的位置,并且刪除方法。提示:Inline會(huì)用方法的實(shí)現(xiàn)部分替換所有調(diào)用方法的地方。2.Extract Method快捷鍵:alt+shift+m“Extract Method”重構(gòu)和“Inline”重構(gòu)相反,它能夠從冗長的方法中提取小的方法,把大的方法分解成多個(gè)小方法來實(shí)現(xiàn),通過此重構(gòu)能夠使代碼看上去更簡單漂亮,也很大程度

16、上提高代碼的復(fù)用性??梢赃x擇要提取方法的代碼,在Refactor菜單中選擇“Extract Method”打開“Extract Method”對(duì)話框,如圖14所示。圖14 “Extract Method”對(duì)話框“Extract Method”重構(gòu)是非常好的重構(gòu)方式,能夠把大的方法體重構(gòu)成多個(gè)方法的實(shí)現(xiàn),使代碼更清楚易懂。提示:“Extract Method”重構(gòu)和“Inline”重構(gòu)是對(duì)應(yīng)的,有些時(shí)候?yàn)榱私M織一些不合的函數(shù),可以先通過“Inline”的方式生成一個(gè)大的函數(shù),再通過“Extract Method”來重構(gòu)大的函數(shù),使代碼更趨于合理。3.Extract Local Variable快

17、捷鍵:alt+shift+l在開發(fā)過程中,使用變量代替表達(dá)式是非常好的,這樣能使代碼更容易被理解。Eclipse中可以通過“Extract Local Variable”重構(gòu)實(shí)現(xiàn)提取局部的表達(dá)式。首先選擇表達(dá)式,在Refactor菜單中選擇“Extract Local Variable”打開“Extract Local Variable”對(duì)話框.4.Extract Constant作用:“Extract Constant”重構(gòu)和“Extract Local Variable”重構(gòu)類似,它可以把表達(dá)式定義為常量,另外“Extract Constant”重構(gòu)能夠設(shè)定常量的可見性。選擇表達(dá)式,在Re

18、factor菜單中選擇“Extract Constant”打開“Extract Constant”對(duì)話框.5.Introduce Parameter作用:Introduce Parameter”重構(gòu)可以通過函數(shù)中的表達(dá)式、變量或引用為函數(shù)添加新的參數(shù),還能夠自動(dòng)更新引用此函數(shù)的其它位置的默認(rèn)參數(shù)。要想進(jìn)行“Introduce Parameter”重構(gòu),可以選擇表達(dá)式、變量或引用。在Refactor菜單中選擇“Introduce Parameter”打開“Introduce Parameter”對(duì)話框6.Introduce Factory作用:“Introduce Factory”重構(gòu)能夠?yàn)轭悇?chuàng)

19、建工廠方法。首先選擇需要?jiǎng)?chuàng)建工廠方法的類的構(gòu)造函數(shù),在Refactor菜單中選擇“Introduce Factory”打開“Introduce Factory”對(duì)話框在“Introduce Factory”對(duì)話框中,可以輸入工廠方法的名字,以及工廠類,Eclipse將會(huì)自動(dòng)根據(jù)構(gòu)造函數(shù)創(chuàng)建工廠方法。提示:工廠類應(yīng)該已經(jīng)存在,通常可以在一個(gè)工廠類中為多個(gè)關(guān)聯(lián)的類創(chuàng)建工廠方法,所以在使用“Introduce Factory”重構(gòu)前,應(yīng)該先創(chuàng)建好工廠類。7.Convert Local Variable to Field作用:“Convert Local Variable to Field”重構(gòu)能夠把局部的變量轉(zhuǎn)換成類中的全局變量。首先選擇要轉(zhuǎn)換的局部變量,在Refactor菜單中選擇“Convert Local Variable to Field”打開“Convert Local Variable to Field”對(duì)話框8.Encapsulate Field作用:“Enc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論