Vincent

          Vicent's blog
          隨筆 - 74, 文章 - 0, 評(píng)論 - 5, 引用 - 0
          數(shù)據(jù)加載中……

          利用Eclipse進(jìn)行重構(gòu)(下)

          Extract Method
          ?????? 如果方法中含有過多特定的操作,方法太長,或者其中的某段代碼被多次使用,這時(shí),可以用提煉方法重構(gòu)將這部分代碼提取到單獨(dú)的方法中。在Eclipse中應(yīng)用此重構(gòu)方便快捷。
          ?????? 選中要提煉的代碼段,從重構(gòu)菜單中選擇提煉方法項(xiàng),或者使用快捷鍵Alt + Shift + M。
          ?????? 在提煉方法對(duì)話框中,輸入新方法的名字,選擇修飾詞,選擇是否讓新方法拋出運(yùn)行時(shí)異常。在底部提供了新方法的預(yù)覽。
          ?
          ?
          Extract Local Variable
          ?????? 使用一個(gè)變量來代替一個(gè)表達(dá)式有很多好處。如果表達(dá)式在多處被使用,這樣能夠提高性能,而且也提高了代碼的可讀性。要把一個(gè)表達(dá)式提煉為局部變量,選擇要提煉的表達(dá)式,從重構(gòu)菜單中選擇提煉局部變量項(xiàng),或者使用快捷鍵Alt + Shift + L。
          ?????? 在提煉局部變量對(duì)話框中輸入新變量的名字,選擇是否要替換所有的表達(dá)式,是否使此變量為final。在對(duì)話框的底部提供變量的預(yù)覽。
          ??????
          Extract Constant
          ?????? 提煉常量與提煉局部變量很相似,唯一的區(qū)別是提煉常量重構(gòu)可以選擇提煉出的常量的修飾詞,而且此常量將作為類的成員變量。
          ?
          Introduce Parameter
          ?????? 介紹參數(shù)重構(gòu)在方法中創(chuàng)建新的參數(shù),然后用此新參數(shù)取代局部變量或者成員變量的實(shí)例。要是用此重構(gòu),選中方法中一個(gè)成員變量或局部變量的引用,然后從重構(gòu)菜單中選擇介紹參數(shù)項(xiàng)。
          ?
          ?
          Introduce Factory
          ?????? 工廠是用來創(chuàng)建新對(duì)象,返回新創(chuàng)建對(duì)象的方法。你可以選擇一個(gè)類的構(gòu)造方法,從重構(gòu)菜單中選擇介紹工廠項(xiàng),應(yīng)用此重構(gòu),為此類創(chuàng)建工廠方法。
          ??????
          介紹工廠對(duì)話框,輸入工廠方法的名字和需要工廠方法創(chuàng)建的對(duì)象的名字。選擇構(gòu)造方法的修飾詞是否為私有。
          ?????? 點(diǎn)擊OK按鈕后,在指定的類中會(huì)出現(xiàn)此指定工廠方法。此方法創(chuàng)建一個(gè)當(dāng)前類的實(shí)例,然后返回此實(shí)例。
          ?
          Convert Local Variable to Field
          ?????? 轉(zhuǎn)換局部變量為成員變量重構(gòu),將方法內(nèi)的變量聲明移動(dòng)到方法所在類中,使該變量對(duì)整個(gè)類可見。選擇一個(gè)局部變量,從重構(gòu)菜單中選擇轉(zhuǎn)換局部變量為成員變量項(xiàng),隨后打開配置的對(duì)話框。
          ??????
          ?????? 在此對(duì)話框中,添入成員變量的名字,選擇修飾詞,選擇在哪里實(shí)例化此成員變量。隨后的聲明為靜態(tài)聲明為final 選擇項(xiàng)是否可以使用,取決于實(shí)例化位置的選擇情況。
          ?
          Encapsulate Field
          ?????? 要正確的實(shí)踐面向?qū)ο缶幊蹋瑧?yīng)該將成員變量的修飾詞置為私有,提供相應(yīng)的訪問器來訪問這些成員變量。但是這些操作很煩瑣。如果使用了封裝成員變量重構(gòu),則十分方便。選擇一個(gè)成員變量,從重構(gòu)菜單中選擇封裝成員變量項(xiàng)。
          ?
          ?????? 在封裝局部變量對(duì)話框中,添入Getter, Setter方法的名字,選擇新方法在哪個(gè)方法后出現(xiàn)。選擇合適的修飾詞。應(yīng)用了此重構(gòu)會(huì)創(chuàng)建兩個(gè)新方法,將此成員變量的修飾詞置為私有,將對(duì)此成員變量的引用改變?yōu)閷?duì)新方法的引用。
          ?
          重構(gòu)項(xiàng)列表:
          ?????? 下表從Eclipse幫助中提取,列出了各種重構(gòu)支持的Java資源類型,對(duì)應(yīng)的快捷鍵。
          ?

          名字
          可應(yīng)用的Java元素
          快捷鍵
          Undo
          在一次重構(gòu)后可執(zhí)行
          Alt + Shift + Z
          Redo
          在一次撤銷重構(gòu)后可執(zhí)行
          Alt + Shift + Y
          Rename
          對(duì)方法,成員變量,局部變量,方法參數(shù),對(duì)象,類,包,源代碼目錄,工程可用。
          Alt + Shift + R
          Move
          對(duì)方法,成員變量,局部變量,方法參數(shù),對(duì)象,類,包,源代碼目錄,工程可用。
          Alt + Shift + V
          Change Method Signature
          對(duì)方法可用。
          Alt + Shift + C
          Convert Anonymous Class to Nested
          對(duì)匿名內(nèi)部類可用。
          ?
          Move Member Type to New File
          對(duì)嵌套類可用。
          ?
          Push Down
          對(duì)同一個(gè)類中成員變量和方法可用。
          ?
          Pull Up
          對(duì)同一個(gè)類中成員變量和方法,嵌套類可用。
          ?
          Extract Interface
          對(duì)類可用。
          ?
          Generalize Type
          對(duì)對(duì)象的聲明可用。
          ?
          Use Supertype Where Possible
          對(duì)類可用。
          ?
          Inline
          對(duì)方法,靜態(tài)final類,局部變量可用。
          Alt + Shift + I
          ?
          Extract Method
          對(duì)方法中的一段代碼可用。
          Alt + Shift + M
          ?
          Extract Local Variable
          對(duì)選中的與局部變量相關(guān)的代碼可用。
          Alt + Shift + L
          ?
          Extract Constant
          對(duì)靜態(tài)final類變量,選中的與靜態(tài)final類變量相關(guān)的代碼可用。
          ?
          Introduce Parameter
          對(duì)方法中對(duì)成員變量和局部變量的引用可用。
          ?
          Introduce Factory
          對(duì)構(gòu)造方法可用。
          ?
          Convert Local Variable to Field
          對(duì)局部變量可用。
          Alt + Shift + F
          Encapsulate Field
          對(duì)成員變量可用。
          ?
          ?????? 本文介紹了Eclipse提供的各種重構(gòu)。這些重構(gòu)易于使用,可以確保代碼重構(gòu)更加方便安全。而且可以自動(dòng)生成代碼以提高生產(chǎn)率。

          ?????? 某些重構(gòu)改變了某些類的結(jié)構(gòu),但沒有改變項(xiàng)目中其他類的結(jié)構(gòu),如下推,上移重構(gòu)。這時(shí),就要確保項(xiàng)目中所有對(duì)改變?cè)氐囊枚家桓隆_@也是為什么要有一個(gè)好的測試套。同時(shí),你也要更新測試套中的對(duì)改變?cè)氐囊谩K哉f,重構(gòu)和單元測試的有機(jī)結(jié)合對(duì)于軟件開發(fā)是多么的重要。

          posted on 2006-08-24 15:01 Binary 閱讀(258) 評(píng)論(0)  編輯  收藏 所屬分類: Eclipse


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 淄博市| 康平县| 沐川县| 乡城县| 湟中县| 金塔县| 安塞县| 岳池县| 麻城市| 扬州市| 呼和浩特市| 南和县| 新巴尔虎右旗| 巨野县| 沈阳市| 松原市| 吉隆县| 阿拉善盟| 荥经县| 龙江县| 丁青县| 高邑县| 邵武市| 定日县| 长子县| 闽侯县| 吉首市| 金阳县| 蓝田县| 合作市| 米泉市| 油尖旺区| 东丽区| 阿拉善右旗| 丰城市| 怀远县| 漳平市| 灵石县| 康定县| 闸北区| 新平|