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 閱讀(2008) 評論(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啊。
          我發的是一本書  回復  更多評論
            

          主站蜘蛛池模板: 武强县| 黔西县| 梓潼县| 合江县| 将乐县| 黄骅市| 海原县| 海伦市| 通海县| 屏南县| 达孜县| 布拖县| 扎囊县| 左贡县| 遵义县| 邹城市| 仁布县| 郧西县| 无为县| 商都县| 韩城市| 镇远县| 汪清县| 恭城| 云浮市| 寻乌县| 太仓市| 阳城县| 江油市| 土默特右旗| 克山县| 石柱| 上饶县| 崇州市| 垣曲县| 义乌市| 东方市| 大方县| 竹北市| 河曲县| 全南县|