ivaneeo's blog

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

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

          常用鏈接

          留言簿(34)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          作法(Mechanics)
            • 創造一個新函數,根據這個函數的意圖來給它命名(以它[做什么]來命名,而不是以它[怎么做]命名)。 --》即使你想要提煉(extract)的代碼非常簡單,例如只是一條消息或一個函數調用,只要新函數的名稱能夠以更好方式昭示代碼意圖,你也應該提煉 它。但如果你想不出一個更有意義的名稱,就別動。
            • 將提煉出的代碼從源函數(source)拷貝到新建的目標函數(target)中。
            • 仔細檢查提煉出的代碼,看看其中是否引用了[作用域(scope)限于源函數]的變量(包括局部變量和源函數參數)。
            • 檢查是否有[僅用于被提煉碼]的臨時變量(temporary variables)。如果有,在目標函數中將它們聲明為臨時變量。
            • 檢查被提煉碼,看看是否有任何局部變量(local-scope variables)的值被它改變。如果一個臨時變量值被修改了,看看是否可以被提煉碼處理為一個查詢(query),并將結果賦值給相關變量。如果很難 這樣做,或如果被修改的變量不止一個,你就不能僅僅將這段代碼原封不動地提煉出來。你可能需要先使用Split Temporary Variable(128),然后再嘗試提煉。也可以使用Replace Temp with Query(120)將臨時變量消滅掉。
            • 將被提煉碼中需要讀取的局部變量,當作參數傳給目標函數。
            • 處理完所有局部變量之后,進行編譯。
            • 在源函數中,將被提煉碼替換為[對目標函數的調用]。--》如果你將任何臨時變量移到目標函數中,請檢查它們原本的聲明式是否在被提煉碼的外圍。如果是,現在你可以刪除這些聲明式了。
            • 編譯,測試。
          posted on 2005-08-24 11:04 ivaneeo 閱讀(199) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 五寨县| 嘉祥县| 宁蒗| 深圳市| 桑植县| 乌审旗| 白玉县| 盐津县| 井陉县| 崇义县| 元阳县| 改则县| 礼泉县| 贵州省| 芒康县| 阜康市| 碌曲县| 自贡市| 习水县| 龙门县| 安吉县| 巴彦淖尔市| 湄潭县| 克山县| 怀仁县| 道孚县| 古田县| 塔城市| 沁阳市| 肥西县| 旺苍县| 廊坊市| 南澳县| 玛多县| 许昌县| 临沂市| 图木舒克市| 杭锦后旗| 八宿县| 黄大仙区| 平乡县|