ivaneeo's blog

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

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          作法(Mechanics)
            • 創(chuàng)造一個(gè)新函數(shù),根據(jù)這個(gè)函數(shù)的意圖來(lái)給它命名(以它[做什么]來(lái)命名,而不是以它[怎么做]命名)。 --》即使你想要提煉(extract)的代碼非常簡(jiǎn)單,例如只是一條消息或一個(gè)函數(shù)調(diào)用,只要新函數(shù)的名稱(chēng)能夠以更好方式昭示代碼意圖,你也應(yīng)該提煉 它。但如果你想不出一個(gè)更有意義的名稱(chēng),就別動(dòng)。
            • 將提煉出的代碼從源函數(shù)(source)拷貝到新建的目標(biāo)函數(shù)(target)中。
            • 仔細(xì)檢查提煉出的代碼,看看其中是否引用了[作用域(scope)限于源函數(shù)]的變量(包括局部變量和源函數(shù)參數(shù))。
            • 檢查是否有[僅用于被提煉碼]的臨時(shí)變量(temporary variables)。如果有,在目標(biāo)函數(shù)中將它們聲明為臨時(shí)變量。
            • 檢查被提煉碼,看看是否有任何局部變量(local-scope variables)的值被它改變。如果一個(gè)臨時(shí)變量值被修改了,看看是否可以被提煉碼處理為一個(gè)查詢(xún)(query),并將結(jié)果賦值給相關(guān)變量。如果很難 這樣做,或如果被修改的變量不止一個(gè),你就不能僅僅將這段代碼原封不動(dòng)地提煉出來(lái)。你可能需要先使用Split Temporary Variable(128),然后再?lài)L試提煉。也可以使用Replace Temp with Query(120)將臨時(shí)變量消滅掉。
            • 將被提煉碼中需要讀取的局部變量,當(dāng)作參數(shù)傳給目標(biāo)函數(shù)。
            • 處理完所有局部變量之后,進(jìn)行編譯。
            • 在源函數(shù)中,將被提煉碼替換為[對(duì)目標(biāo)函數(shù)的調(diào)用]。--》如果你將任何臨時(shí)變量移到目標(biāo)函數(shù)中,請(qǐng)檢查它們?cè)镜穆暶魇绞欠裨诒惶釤挻a的外圍。如果是,現(xiàn)在你可以刪除這些聲明式了。
            • 編譯,測(cè)試。
          posted on 2005-08-24 11:04 ivaneeo 閱讀(198) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): refactoring-從地獄中重生
          主站蜘蛛池模板: 昌乐县| 贵定县| 托克托县| 盱眙县| 晋州市| 汉阴县| 原阳县| 隆化县| 东明县| 榆林市| 广平县| 衡南县| 柘城县| 那坡县| 昌都县| 潞城市| 广平县| 泊头市| 和硕县| 正定县| 安塞县| 桓仁| 青铜峡市| 彩票| 奉节县| 乳山市| 丰镇市| 大庆市| 宝鸡市| 乐业县| 建阳市| 台东市| 都匀市| 海兴县| 横峰县| 始兴县| 高尔夫| 西城区| 卢湾区| 林甸县| 奉新县|