ivaneeo's blog

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

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

          常用鏈接

          留言簿(34)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          最單純的Duplicated Code就是[同一個class內的兩個函數含有相同表達式(express)]。這時候你需要做的就是采用Extract Method(110)提煉出重復的代碼,然后讓這兩個地點都調用被提煉出來的那一段代碼。

          另一種常見情況就是[兩個互為兄弟(sibling)的subclass內含相同表達式]。要避免這種情況,只需對兩個classes都使用Extract Method(110),然后再對被提煉出來的代碼使用Pull Up Method(332),將它推入superclass內。如果代碼之間是類似,并非完全相同,那么就得運用Extract Method(110)將相似部分和差異部分割開,構成單獨一個函數。然后你可能發現或許可以運用Form Template Method(345)獲得一個Template Method設計模式。如果有些函數以不同的算法做相同的事,你可以擇定其中較清晰的一個,并使用Substitute Algorithm(139)將其他函數的算法替換掉。

          如果兩個毫不相關的classes內出現Duplicated Code,你應該考慮對其中一個使用Extract Class(149), 將重復代碼提煉到一個獨立class中,然后在另一個class內使用這個新class。但是,重復代碼所在的函數也可能的確只應該屬于某個class, 另一個class只能調用它,抑或這個函數可能屬于第三個class,而另兩個classes應該引用這第三個class。你必須決定這個函數放在哪個最 合適,并確保它被安置后就不會再在其他任何地方出現。
          posted on 2005-08-16 17:03 ivaneeo 閱讀(500) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 山阳县| 商都县| 兴隆县| 茂名市| 若羌县| 肥东县| 新沂市| 平利县| 安塞县| 宣化县| 龙泉市| 封丘县| 涞源县| 靖宇县| 卫辉市| 大庆市| 泰安市| 东至县| 象山县| 贺州市| 珠海市| 茂名市| 泰来县| 峨山| 罗甸县| 梓潼县| 六枝特区| 辉南县| 岐山县| 马尔康县| 淄博市| 保定市| 威海市| 波密县| 滕州市| 天峨县| 西林县| 都昌县| 兴业县| 防城港市| 郯城县|