ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          最單純的Duplicated Code就是[同一個class內(nèi)的兩個函數(shù)含有相同表達式(express)]。這時候你需要做的就是采用Extract Method(110)提煉出重復(fù)的代碼,然后讓這兩個地點都調(diào)用被提煉出來的那一段代碼。

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

          如果兩個毫不相關(guān)的classes內(nèi)出現(xiàn)Duplicated Code,你應(yīng)該考慮對其中一個使用Extract Class(149), 將重復(fù)代碼提煉到一個獨立class中,然后在另一個class內(nèi)使用這個新class。但是,重復(fù)代碼所在的函數(shù)也可能的確只應(yīng)該屬于某個class, 另一個class只能調(diào)用它,抑或這個函數(shù)可能屬于第三個class,而另兩個classes應(yīng)該引用這第三個class。你必須決定這個函數(shù)放在哪個最 合適,并確保它被安置后就不會再在其他任何地方出現(xiàn)。
          posted on 2005-08-16 17:03 ivaneeo 閱讀(500) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 宁津县| 横山县| 汉源县| 蒙自县| 山阳县| 禄丰县| 凤阳县| 乌拉特后旗| 抚州市| 蓬溪县| 天津市| 南昌县| 临沭县| 宜章县| 阿坝县| 孙吴县| 钟祥市| 三穗县| 云阳县| 保德县| 沁水县| 车致| 石棉县| 扶沟县| 内乡县| 抚远县| 屏东市| 邛崃市| 香河县| 彭山县| 辽宁省| 永和县| 安远县| 神木县| 铜陵市| 沾益县| 改则县| 平谷区| 朔州市| 扎赉特旗| 繁昌县|