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

          主站蜘蛛池模板: 永嘉县| 仙居县| 信宜市| 邻水| 安图县| 卢氏县| 廉江市| 广元市| 建宁县| 安溪县| 灵石县| 崇信县| 西充县| 鲁山县| 武义县| 大庆市| 新源县| 铅山县| 沧州市| 桃源县| 苏尼特右旗| 文水县| 靖安县| 自贡市| 阿瓦提县| 夏邑县| 麻江县| 辽阳市| 虎林市| 阿拉善右旗| 青川县| 道孚县| 奇台县| 琼结县| 乌海市| 合水县| 开江县| 利辛县| 宜兴市| 东乡| 石林|