ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          • 作法(Mechanics)
            • 加入[為群集添加(add),移除(remove)元素]的函數.
            • 將[用以保存群集]的值域初始化為一個空群集.
            • 編譯.
            • 找出[群集設值函數]的所有調用者.你可以修改那個設值函數,讓它使用上述新建立的[添加/移除元素]函數;也可以直接修改調用端,改讓它們調用上述新建立的[添加/移除元素]函數.
                • ==>兩種情況下需要用到[群集設值函數];(1)群集為空時;(2)準備將原有群集替換為另一個群集時.
                • ==>你或許會想運用Rename Method(273)為[群集設值函數]改名,從setXxx()改為initializeXxx()或replaceXxx().
            • 編譯,測試.
            • 找出所有[通過取值函數(getter)獲得群集并修改其內容]的函數.逐一修改這些函數,讓它們改用[添加/移除](add/remove)函數.每次修改后,編譯并測試.
            • 修改完上述所有[通過取值函數(getter)獲得群集并修改群集內容]的函數后,修改取值函數自身,使它返回該群集的一個只讀映件(read-only view).
                • ==>在Java 2中,你可以使用Collection.unmodifiableXxx()得到該集群的只讀映件.
                • ==>在Java 1.1中,你應該返回群集的一份拷貝.
            • 編譯,測試.
            • 找出取值函數(getter)的所有用戶,從中找出應該存在于[群集之宿主對象(host object)]內的代碼.運用Extract Method(110)和Move Method(142)將這些代碼移到宿主對象去.
          • 如果你使用Java 2,那么本項重構到此為止.如果你使用Java 1.1,那么用戶也許會喜歡使用枚舉(enumeration).為了提供這個枚舉,你應該這樣做.
            • 修改現有取值函數(getter)的名字,然后添加一個新取值函數,使其返回一個枚舉.找出舊取值函數的所有被使用點,將它們都改為使用新取值函數.
                • ==>如果這一步跨度太大,你可以先使用Rename Method(273)修改原取值函數的名稱;再建立一個新取值函數用以返回枚舉;最后再修改所有調用者,使其調用新取值函數.
            • 編譯,測試.
          posted on 2005-09-15 17:51 ivaneeo 閱讀(553) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 县级市| 万安县| 惠州市| 黄龙县| 内黄县| 茶陵县| 北宁市| 化州市| 阿合奇县| 东阿县| 金昌市| 克拉玛依市| 阿城市| 常熟市| 光山县| 开封市| 慈利县| 衡南县| 鲁山县| 满洲里市| 磴口县| 耿马| 雷山县| 湖南省| 舞阳县| 尤溪县| 沙河市| 正镶白旗| 定边县| 章丘市| 边坝县| 普宁市| 阿克| 海安县| 遂溪县| 新宾| 淄博市| 电白县| 泸水县| 昌都县| 西畴县|