<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    That way I want to stay

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      55 Posts :: 1 Stories :: 41 Comments :: 0 Trackbacks
    ? http://m.tkk7.com/Files/Wingel/敏捷開發(fā)的必要技巧第1,2章.rar???????????????????????????????????????????????????????????????????????????????????????????????????????????????????
    ??????????????? 第1章 移除重復(fù)代碼
    ???????????????????????????????????????????????????????????????????????????????
    重復(fù)代碼是怎么產(chǎn)生的?

    請觀察下面的代碼,我們已經(jīng)有一個根據(jù)出租記錄的id取出租用客戶的姓名的方法:getCustomerName。

    ??? public class BookRental { //該類描述出租記錄
    ??????? String id;
    ??????? String customerName;

    ??????? ...

    ??? }
    ??? public class BookRentals {
    ?????? private Vector rentals;
    ?????? public String getCustomerName(String rentalId) { 根據(jù)出租id取出客戶姓名
    ?????????? for (int i = 0; i < rentals.size(); i++) {
    ????????????? BookRental rental = (BookRental) rentals.elementAt(i);
    ????????????? if (rental.getId().equals(rentalId)) {
    ????????????????? return rental.getCustomerName();
    ?????????????? }
    ?????????? }
    ?????????? throw new RentalNotFoundException();
    ??????? }
    ??? }
    ??? public class RentalNotFoundException extends Exception {

    ??????? ...

    ??? }

    假定現(xiàn)在你要增加一個新的方法,該方法是根據(jù)出租記錄的id刪除該記錄,然后把它命名為deleteRental(String rentalId)?,F(xiàn)在你已經(jīng)考慮到,就像getCustomerName這個方法一樣,你要一個一個遍歷出租記錄。所以你就將getCustomerName這個方法里面的一些代碼拷出來,然后稍微修改一下:

    ??
    .....


    為什么我們要移除重復(fù)代碼?

    我來向各位程序員同學(xué)稍微說一下,在BookRentals這個類中,rentals這個屬性的類型是Ventor,如果我們需要將它改為數(shù)組,那我們就必須將所有的"rentals.size()"改為"rentals.length". 在重構(gòu)以后的版本中,我們只需要在getRentalIdxById這個方法中修改一次,而在原來的版本,我們就得在getCustomerName跟deleteRental兩個方法中都改一次。類似的,我們還要將所有的"rentals.elementAt(i)" 改為 "rentals[i]". 又是改一次跟改兩次的比較!

    大多數(shù)情況中,如果類似這樣的代碼在10個地方重復(fù),當(dāng)我們修改代碼的時候,就要修改10個地方,我們并不能保證能把這10個地方都記住了,而一旦漏掉了幾個地方,等待我們的,是一處一處的錯誤去修復(fù)。而最致命的是,當(dāng)我們修改的是業(yè)務(wù)邏輯時,這時候,不管我們漏掉了幾個地方,IDE都不會報錯,那么,等待我們的,將一堆去檢查,而造成的一些bug中,很可能是短時間內(nèi)還發(fā)現(xiàn)不了了.慘-_-!!

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

    http://m.tkk7.com/Files/Wingel/敏捷開發(fā)的必要技巧第1,2章.rar
    posted on 2006-11-27 21:22 Wingel 閱讀(1968) 評論(0)  編輯  收藏 所屬分類: 敏捷開發(fā)
    主站蜘蛛池模板: 亚洲精品在线免费看| 一级一级毛片免费播放| 1a级毛片免费观看| 国产av无码专区亚洲av桃花庵 | 亚洲AV日韩精品一区二区三区| 亚洲三级在线观看| 久久午夜夜伦鲁鲁片免费无码| 亚洲日韩中文字幕日韩在线| www永久免费视频| 亚洲精品无码久久千人斩| 美女无遮挡拍拍拍免费视频 | 理论片在线观看免费| 免费女人18毛片a级毛片视频| 精品久久亚洲一级α| 亚洲人成无码网WWW| 国产黄在线观看免费观看不卡| 亚洲无线观看国产精品| 日韩精品免费在线视频| 2020天堂在线亚洲精品专区| 特级淫片国产免费高清视频| 黄色三级三级免费看| 久久久久国产成人精品亚洲午夜 | 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲人成影院在线无码观看| 99麻豆久久久国产精品免费| 久久亚洲精品国产精品| 午夜高清免费在线观看| fc2免费人成在线| 亚洲精品国产手机| 国产在线a不卡免费视频| 在线看片免费人成视频久网下载| 亚洲美女aⅴ久久久91| 免费无遮挡无码视频网站| 一级免费黄色大片| 亚洲成a人片7777| 亚洲国产日韩在线观频| 午夜免费福利小电影| 免费v片在线观看无遮挡| 成人A片产无码免费视频在线观看| 亚洲国产成人精品无码区在线秒播| 国产精品无码免费视频二三区|