ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          作法(Mechanics)
            • 如果field的屬性是public,首先使用Encapsulate Field(206)將它封裝起來。
                • ==》如果你有可能移動那些頻繁訪問該field的函數,或如果有許多函數訪問某個field,先使用Self Encapsulate Field(171)也許會有幫助。
            • 編譯,測試。
            • 在target class中建立與source field相同的field,并同時建立相應的設值/取值(setting/getting)函數。
            • 編譯target class。
            • 決定如何在source object中引用target object。
                • ==》一個現成的field或method可以助你得到target object。如果沒有,就看能否輕易建立這樣一個函數。如果還不行,就得在source class中新建一個field來存放target object。這可能是個永久性修改,但你也可以暫不公開它,因為后續重構可能會把這個新建field除掉。
            • 刪除source field。
            • 將所有[對source field的引用]替換為[對target適當函數的調用]。
                • ==》如果是[讀取]該變量,就把[對source field的引用]替換為[對target取值函數(getter)的調用];如果是[賦值]該變量,就把[對source field的引用]替換成[對設值函數(setter)的調用]。
                • ==》如果source field不是private,就必須在source class的所有subclasses中查找source field的引用點,并進行相應替換。
            • 編譯,測試。
          posted on 2005-08-30 14:31 ivaneeo 閱讀(157) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 芒康县| 临朐县| 奎屯市| 兴城市| 宿州市| 长治县| 平塘县| 阜城县| 泰宁县| 夏津县| 湖北省| 江孜县| 甘德县| 广南县| 崇左市| 莒南县| 满洲里市| 东阳市| 昌吉市| 临夏市| 翁牛特旗| 乌鲁木齐县| 隆化县| 天等县| 宣城市| 苗栗县| 章丘市| 靖边县| 安达市| 望谟县| 兴安盟| 星子县| 通江县| 道真| 平泉县| 富锦市| 磐石市| 新泰市| 湘乡市| 西林县| 巴南区|