重構和單元測試是程序員的兩大法寶,他們的作用就像空氣和水對于人一樣,平凡,不起眼,但是意義深重。預善事,必先利器,本文就介紹怎樣在Ecl
ipse中進行重構。
本文介紹了Eclipse支持的重構種類,它們的含義,以及怎樣重構。本文同時也可以作為學習重構知識的快速手冊。
什么是重構
重構是指在保持程序的全部功能的基礎上改變程序結構的過程。重構的類型有很多,如更改類名,改變方法名,或者提取代碼到方法中。每一次重構,都要執行一系列的步驟,這些步驟要保證代碼和原代碼相一致。
為什么重構很重要
手工重構時,很輕易在代碼中引入錯誤,例如拼寫錯誤或者漏掉了重構的某一步。為了防止引入錯誤,在每次重構前后,都要執行充分的測試。你可能會好奇重構是否是值得的。
重構的理由很多。你可能想要更新一段代碼很爛的程序。或者最初的設計隊伍都不在了,現在隊伍中每人了解這些程序。為了更新,你必須要重新設計構建程序來滿足你的需求。另一個原因是原來的設計無法使你將新的特性添加進去。為了添加進去,你要重構這些代碼。第三個原因是一個自動重構的工具可以為你自動生成代碼,例如Eclipse中的重構功能。使用重構,你可以在重寫盡量少的代碼和仍保持軟件功能的同時,使代碼的邏輯性更好。
測試
在重構時,測試是十分重要的。應為重構改變了代碼的結構,你要保證重構后代碼的功能沒有被改變。手工重構時,一個好的測試套是必須的。使用自動重構工具是,測試也是必要的,但不需要很頻繁,應為自動重構工具不會產生手工重構時的那些錯誤,如拼寫錯誤。
在Eclipse中可以使用JUnit方便的為程序創建測試代碼,具體方法不在本文描述。
Eclipse中的重構
JDT,Eclipse中的
java插件,能夠對Java項目,類,或成員進行多種類型的自動重構。可以采取多種方法快速的為Java項目中的某個元素進行重構。
為某些元素進行重構的前提是你必須選中他們。你可以在多個視圖中選擇這些元素,像大綱視圖或包瀏覽視圖。可以按住Ctrl或Shift鍵,在視圖中選擇多個元素。另外一種選擇的方法是使該元素的編輯區高亮顯示,或者把鼠標定位到源程序文件。在選中希望重構的元素后,可以從重構菜單的下拉項選擇重構,也可以從右鍵單擊后彈出菜單中選擇重構子菜單。同時,Eclipse還提供了重構的快捷鍵操作。
某些重構可以應用在任意元素上,有些則只能用在特定類型的元素上,如類或方法。在本文的最后的表格中,列出了重構能夠應用的元素類型,以及重構的快捷鍵。
在Eclipse中,所有的重構都能夠在正式執行之前預覽一下。在重構對話框中點擊“預覽”按鈕,可以查看所有將要被改變的地方。唯一沒有預覽按鈕的的重構是Pull Up,在它的重構向導中,到最后,預覽面板總會出現。可以將其中的個別變化反選掉,這樣這些改變就不會生效。
撤銷和重做
在重構菜單中有撤銷和重做項。他們和編輯菜單中的撤銷重做不同。即使重構改變了很多文件,編輯菜單中的撤銷重做只會更改當前文件。重構菜單中的撤銷和重做則會對一次重構的所有文件進行撤銷和重做操作。但是在使用時,它們有一定的限制。
重構后,無論重構改變了文件與否,假如任一個文件被另外改變而且保存了,你就無法撤銷或重做這個重構。假如一個文件在重構中被修改了,然后又被編輯了,但是還沒有保存,這時就會有錯誤信息提示,假如你想要撤銷或重做該重構,必須撤銷未保存的文件。
只要注重到以上的限制條件,你就可以隨心所欲的對重構進行撤銷或重做。你甚至能夠編譯,運行你的程序測試一下,然后再撤銷該重構,只要你沒有改變并保存任何文件。
Eclipse中的重構類型
假如你看一下Eclipse的重構菜單,可以看到四部分。第一部分是撤銷和重做。其他的三部分包含Eclipse提供的三種類型的重構。
第一種類型的重構改變代碼的物理結構,像Rename和Move。第二種是在類層次上改變代碼結構,例如Pull Up和Push Down。第三種是改變類內部的代碼,像Extract Method和Encapsulate Field。這三部分的重構列表如下。