ivaneeo's blog

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

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          • 作法(Mechanics)
            • 找出[你想去除的指針]的保存值域,檢查它的每一個(gè)用戶,判斷是否可以去除該指針.
                • ==>不但要檢查[直接讀取點(diǎn)],也要檢查[直接讀取點(diǎn)]的調(diào)用函數(shù).
                • ==>考慮有無(wú)可能不通過(guò)指針函數(shù)取得[被引用對(duì)象](referred object).如果有可能,你就可以對(duì)取值函數(shù)(getter)使用Substitute Algorithm(139).從而讓客戶在沒有指針的情況下也可以使用該取值函數(shù).
                • ==>對(duì)于使用該值域的所有函數(shù),考慮將[被引用對(duì)象](referred object)作為引數(shù)(argument)傳進(jìn)去.
            • 如果客戶使用了取值函數(shù)(getter),先運(yùn)用Self Encapsulate Field(171)將[待除值域]自我封裝起來(lái),然后使用Subsitute Algorithm(139)對(duì)付取值函數(shù),令它不再使用該(待除)值域.然后編譯,測(cè)試.
            • 如果客戶并使用取值函數(shù)(getter),那就直接修改[待除值域]的所有被引用點(diǎn):改以其他途徑獲得該值域所保存的對(duì)象.每次修改后,編譯并測(cè)試.
            • 如果已經(jīng)沒有任何函數(shù)使用該(待除)值域,移除所有[對(duì)該值域的更新邏輯],然后移除該值域.
                • ==>如果有許多地方對(duì)此值域賦值,先運(yùn)用Self Encapsulate Field(171)使這些地點(diǎn)改用同一個(gè)設(shè)值函數(shù)(setter).編譯,測(cè)試.而后將這個(gè)設(shè)值函數(shù)的本體清空.再編譯,再測(cè)試.如果這些都可行,就可以將此值域和其設(shè)值函數(shù),連同對(duì)設(shè)值函數(shù)的所有調(diào)用,全部移除.
            • 編譯,測(cè)試.
          posted on 2005-09-14 15:11 ivaneeo 閱讀(258) 評(píng)論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 玛纳斯县| 芜湖县| 新昌县| 庆阳市| 连云港市| 托克托县| 宝山区| 渝中区| 台前县| 山阴县| 衡阳县| 东乡| 盱眙县| 临夏市| 营口市| 黑水县| 鄂伦春自治旗| 宁陵县| 玉林市| 三原县| 塘沽区| 大洼县| 迁西县| 民乐县| 阿荣旗| 阳谷县| 婺源县| 双流县| 莲花县| 洮南市| 墨竹工卡县| 阜新| 延长县| 仙居县| 游戏| 安化县| 大荔县| 黄山市| 雅安市| 莫力| 台东市|