本文用eclipse的自動重構(gòu)功能對一個程序?qū)嵗M(jìn)行重構(gòu),目的是探索Eclipse自動重構(gòu)可以在多大程度上輔助重構(gòu)這個過程。程序?qū)嵗褂谩禦efactoring:Improving the Design of Existing Code》一書中的例子。
Eclipse的自動重構(gòu)功能能夠很好地支持各種程序元素的重命名,并自動更新相關(guān)的引用。Eclipse能夠支持方法、字段在類之間移動,并自動更新引用。Eclipse較好地支持內(nèi)聯(lián)字段、函數(shù)的更新替換。Eclipse較好地支持抽取方法、變量等程序元素。
重構(gòu)的過程是一個不斷嘗試和探索的過程。Eclipse的重構(gòu)支持撤銷和重做,并且能夠預(yù)覽重構(gòu)結(jié)果,這些是很實用的功能。
Eclipse的重命名、抽取方法、移動、內(nèi)聯(lián)功能、更改方法特征符等代碼結(jié)構(gòu)級別的重構(gòu)方法,是比較成熟同時也值得使用的功能。至于設(shè)計結(jié)構(gòu)上的重構(gòu),eclipse還不能很好地支持。但是作者相信,自動重構(gòu)的理念應(yīng)該是"工具輔助下的重構(gòu)工作",人仍然承擔(dān)大部分重構(gòu)工作。
一、預(yù)備工作
本文使用《Refactoring:Improving the Design of Existing Code》一書第一章的例子。重構(gòu)前的代碼及每一步重構(gòu)后的代碼見附件。讀者最好配合《Refactoring:Improving the Design of Existing Code》一書閱讀本文。
Eclipse使用如下版本:
同時安裝了中文語言包。
二、重構(gòu)第一步:分解并重組statement()
目的:
1、 把statement()函數(shù)中的swich語句提煉到獨立的函數(shù)amountFor()中。
2、 修改amountFor()參數(shù)命名
重構(gòu)方法:
Extract Method
Rename Method
方法:
1、選中swich語句的代碼塊,在右鍵菜單中選擇"重構(gòu)/抽取方法",出現(xiàn)參數(shù)對話框。Eclipse自動分析代碼塊中的局部變量,找到了兩個局部變量:each和thisAmount。其中,each只是在代碼塊中被讀取,但thisAmount會在代碼塊中被修改。按照重構(gòu)Extract Method總結(jié)出來的規(guī)則,應(yīng)該把each當(dāng)作抽取函數(shù)的參數(shù)、thisAmount當(dāng)作抽取函數(shù)的返回值。然而Eclipse并不做區(qū)分,直接把這兩個變量當(dāng)作抽取新方法的參數(shù),如圖。
選擇"預(yù)覽"按鈕預(yù)先查看重構(gòu)后的結(jié)果,符合我們最初的目的。
標(biāo)簽:拉薩 馬鞍山 武威 亳州 紅河 岳陽 大興安嶺 鄭州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Eclipse中自動重構(gòu)實現(xiàn)探索》,本文關(guān)鍵詞 Eclipse,中,自動,重構(gòu),實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。