That way I want to stay

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            55 Posts :: 1 Stories :: 41 Comments :: 0 Trackbacks
          ? http://www.aygfsteel.com/Files/Wingel/第3章%20除去代碼異味.rar
          ??????????????? 第3章 除去代碼異味 


          ??? 異味這個詞,可能有點抽象,我們先看一下下面的例子

          ??? 這是一個CAD系統. 現在,它已經可以畫三種形狀了:線條,長方形,跟圓.
          先認真的看一下下面的代碼:

          ??? class Shape {??????????????????????????????????????????????????????????????????????????????????
          ?????? final static int TYPELINE = 0;??????????????????????????????????????????????????????????????
          ?????? final static int TYPERECTANGLE = 1;?????????????????????????????????????????????????????????
          ?????? final static int TYPECIRCLE = 2;????????????????????????????????????????????????????????????
          ?????? int shapeType;??????????????????????????????????????????????????????????????????????????????
          ?????? //線條的開始點
          ?????? //長方形左下角的點
          ?????? //圓心
          ?????? Point p1;???????????????????????????????????????????????????????????????????????????????????
          ?????? //線條的結束點
          ?????? //長方形的右上角的點
          ?????? //如果是圓的話,這個屬性不用
          ?????? Point p2;???????????????????????????????????????????????????????????????????????????????????
          ?????? int radius;?????????????????????????????????????????????????????????????????????????????????
          ??? }??????????????????????????????????????????????????????????????????????????????????????????????
          ??? class CADApp {?????????????????????????????????????????????????????????????????????????????????
          ?????? void drawShapes(Graphics graphics, Shape shapes[]) {????????????????????????????????????????
          ?????????? for (int i = 0; i < shapes.length; i++) {???????????????????????????????????????????????
          ?????????????? switch (shapes[i].getType()) {??????????????????????????????????????????????????????
          ????????????????? case Shape.TYPELINE:?????????????????????????????????????????????????????????????
          ????????????????????? graphics.drawLine(shapes[i].getP1(), shapes[i].getP2());?????????????????????
          ????????????????????? break;???????????????????????????????????????????????????????????????????????
          ????????????????? case Shape.TYPERECTANGLE:????????????????????????????????????????????????????????
          ????????????????????? //畫四條邊
          ????????????????????? graphics.drawLine(...);??????????????????????????????????????????????????????
          ????????????????????? graphics.drawLine(...);??????????????????????????????????????????????????????
          ????????????????????? graphics.drawLine(...);??????????????????????????????????????????????????????
          ????????????????????? graphics.drawLine(...);??????????????????????????????????????????????????????
          ????????????????????? break;???????????????????????????????????????????????????????????????????????
          ????????????????? case Shape.TYPECIRCLE:???????????????????????????????????????????????????????????
          ????????????????????? graphics.drawCircle(shapes[i].getP1(), shapes[i].getRadius());???????????????
          ????????????????????? break;???????????????????????????????????????????????????????????????????????
          ?????????????? }???????????????????????????????????????????????????????????????????????????????????
          ?????????? }???????????????????????????????????????????????????????????????????????????????????????
          ?????? }???????????????????????????????????????????????????????????????????????????????????????????
          ??? }??????????????????????????????????????????????????????????????????????????????????????????????


          ??? 代碼都是一直在改變的,而這也是上面的代碼會碰到的一個問題.

          ??? 現在我們有一個問題: 如果我們需要支持更多的形狀(比如三角形), 那么肯定要改動Shape這個類, CADApp里面的drawShapes這個方法也要改.
          好,改為如下的樣子:
          ??
          ......


          ??? 如果我們想要支持更多的圖形(比如:三角形),上面沒有一個類需要修改。我們只需要創建一個新的類Triangle就行了。

          具體的內容在上面的下載鏈接里面的pdf文件里,看pdf比較舒服。

          http://www.aygfsteel.com/Files/Wingel/第3章%20除去代碼異味.rar
          posted on 2006-11-27 21:23 Wingel 閱讀(2009) 評論(3)  編輯  收藏 所屬分類: 敏捷開發

          Feedback

          # re: 敏捷開發的必要技巧----消除代碼異味 2006-11-28 10:36 Slash
          好文啊  回復  更多評論
            

          # re: 敏捷開發的必要技巧----消除代碼異味 2006-11-28 15:02 peace
          你發的是什么內容啊?  回復  更多評論
            

          # re: 敏捷開發的必要技巧----消除代碼異味 2006-11-28 15:04 Slash
          rar里面是個pdf啊。
          我發的是一本書  回復  更多評論
            

          主站蜘蛛池模板: 大荔县| 时尚| 宝丰县| 凤凰县| 霍山县| 伊川县| 淄博市| 石阡县| 宜兰县| 靖西县| 永嘉县| 罗定市| 喀什市| 报价| 扶风县| 文安县| 宽甸| 皋兰县| 龙川县| 宝清县| 隆德县| 泸州市| 玉溪市| 靖江市| 凤阳县| 黄陵县| 金门县| 广河县| 义乌市| 四川省| 和林格尔县| 芦溪县| 镇巴县| 黄浦区| 遵义市| 永昌县| 甘泉县| 札达县| 惠水县| 个旧市| 大英县|