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

          主站蜘蛛池模板: 交城县| 桐柏县| 吉木乃县| 神池县| 商都县| 平邑县| 镇雄县| 富平县| 金昌市| 黔西县| 文登市| 武平县| 静乐县| 元氏县| 清新县| 云梦县| 裕民县| 开平市| 新巴尔虎右旗| 叶城县| 福安市| 灵台县| 靖宇县| 辰溪县| 承德市| 余江县| 尼玛县| 时尚| 南丰县| 彩票| 黔西| 叶城县| 固安县| 淮安市| 龙口市| 津市市| 桃江县| 霍山县| 土默特左旗| 巴马| 宣汉县|