ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(34)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          • 作法(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-從地獄中重生
          主站蜘蛛池模板: 白沙| 闻喜县| 德昌县| 原阳县| 敦煌市| 大理市| 凤山县| 泗水县| 天门市| 北京市| 林甸县| 潮州市| 腾冲县| 铜山县| 泰宁县| 郴州市| 红原县| 邵东县| 鄄城县| 昆明市| 清流县| 沁水县| 锦屏县| 霍山县| 科技| 云阳县| 即墨市| 南皮县| 东乡| 龙山县| 华池县| 凤阳县| 年辖:市辖区| 安陆市| 库车县| 华坪县| 海晏县| 南城县| 大冶市| 阿坝县| 珠海市|