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 閱讀(501) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 孟津县| 格尔木市| 体育| 广南县| 义马市| 新闻| 吉水县| 宽城| 苗栗市| 石嘴山市| 杭州市| 徐汇区| 武义县| 大宁县| 洪雅县| 清新县| 含山县| 灌阳县| 大余县| 海安县| 青阳县| 西乡县| 龙川县| 阿城市| 府谷县| 黄浦区| 台中县| 黄冈市| 隆尧县| 即墨市| 小金县| 陇西县| 京山县| 新源县| 建德市| 东辽县| 延吉市| 鱼台县| 新蔡县| 惠安县| 方正县|