ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          你常常可以在很多地方看到相同的三或四筆數(shù)據(jù)項(xiàng):兩個(gè)classes內(nèi)的相同值域(field)、許多函數(shù)簽名式(signature)中的相同參數(shù)。這 些[總是綁在一起出現(xiàn)的數(shù)據(jù)]真應(yīng)該放進(jìn)屬于它們自己的對象中。首先請找出這些數(shù)據(jù)的值域形式(field)出現(xiàn)點(diǎn),運(yùn)用Extract Class(149)將它們提煉到一個(gè)獨(dú)立對象中。然后將注意力轉(zhuǎn)移到函數(shù)簽名式(signature)上頭,運(yùn)用Introduce Parameter Object(295)或Preserve Whole Object(288)為它減肥。這么做的直接好處是可以將很多參數(shù)列縮短,簡化函數(shù)調(diào)用動(dòng)作。是的,不必因?yàn)?span style="font-weight: bold;">Data Clumps只用上新對象的一部分值或而在意,只要你以新對象取代兩個(gè)(或更多)值域,你就值回票價(jià)了。

          一個(gè)好的評斷辦法是:刪掉眾多數(shù)據(jù)中的一筆。其他數(shù)據(jù)有沒有因而失去意義?如果它們不再有意義,這就是個(gè)明確信號:你應(yīng)該為它們產(chǎn)生一個(gè)新對象。

          縮短值域個(gè)數(shù)和參數(shù)個(gè)數(shù),當(dāng)然可以去除一些壞味道,但更重要的是:一旦擁有新對象,你就有機(jī)會(huì)讓程序散發(fā)出一種芳香。得到新對象后,你就可以著手尋找Feature Envy,這可以幫你指出[可移到新class]中的種種程序行為。不必太久,所有classes都將在它們的小小社會(huì)中充分發(fā)揮自己的生產(chǎn)力。
          posted on 2005-08-19 10:37 ivaneeo 閱讀(1058) 評論(1)  編輯  收藏 所屬分類: refactoring-從地獄中重生

          Feedback

          # re: 代碼的壞味道(8)-Data Clumps(數(shù)據(jù)泥團(tuán)) 2008-12-01 11:41 lujiawu12
          這就是個(gè)明確信號:你應(yīng)該為它們產(chǎn)生一個(gè)新對象

          if they don't ,it's a sure sign that you have an object that's dying to be born.

          dying是垂死的意思,以我的理解應(yīng)是不該產(chǎn)生新對象  回復(fù)  更多評論
            

          主站蜘蛛池模板: 宁河县| 广德县| 五华县| 石嘴山市| 运城市| 太仓市| 万盛区| 汪清县| 临沂市| 宜州市| 宁强县| 怀柔区| 延寿县| 金坛市| 沈丘县| 林芝县| 清镇市| 容城县| 满洲里市| 车致| 安康市| 广平县| 巴青县| 淮阳县| 扎赉特旗| 孟村| 成都市| 龙泉市| 榕江县| 舞阳县| 砀山县| 镇雄县| 商河县| 手游| 永丰县| 德钦县| 和顺县| 长汀县| 铜梁县| 渝中区| 金平|