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

          主站蜘蛛池模板: 陈巴尔虎旗| 新密市| 乳山市| 板桥市| 嘉峪关市| 南安市| 铜山县| 曲松县| 大兴区| 西乌| 克什克腾旗| 布拖县| 眉山市| 金川县| 商水县| 云霄县| 彭泽县| 兴化市| 峨山| 西充县| 玉环县| 沙河市| 堆龙德庆县| 永昌县| 潜山县| 时尚| 隆回县| 襄汾县| 靖西县| 靖州| 广宁县| 基隆市| 南召县| 库尔勒市| 绥宁县| 长武县| 若羌县| 鸡西市| 兴国县| 上杭县| 古田县|