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

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

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

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    正如我在前面提過的,臨時變量可能是個問題。它們只在自己所屬的函數中有效,所以它們會助長[冗長而復雜]的函數。這里我們有兩個臨時變量,兩者都是用來 從Customer對象相關的Rental對象中獲得某個總量。不論ASCII版或HTML版都需要這些總量。我打算運用Replace Temp with Query(120),并利用所謂的query method來取代totalAmount或frequentRentalPoints這兩個臨時變量。由于class內的任何函數都可以取用(調用)上述所謂query methods,所以它可能夠促進較干凈的設計,而非冗長復雜的函數:

    class Customer...
    public String statement() {
        double totalAmount = 0;
        int frequentRenterPoints = 0;
        Enumeration rentals = _rentals.elements();
        String result = "Rental Record for * " + getName() + "\n";
        while(rentals.hasMoreElements()) {
           Rental each = (Rental)rentals.nextElement();    //取得一筆租借記錄

         frequentRenterPointers += each.getFrequentRenterPoints();

              result += "\t" + each.getMovie().getTitle() + "\t" +
                 String.valueOf(each.getCharge()) + "\n";
              totalAmount += each.getCharge();
        }
    //   add footer lines(結尾打印)
        result += "Amount owed is " + String.valueOf(totalAmount) + " \n";
        result += "You earned " + String.valueOf(frequentRenterPoints) +
           "frequent renter points";
        return result;
    }

    首先我以Customer class的getTotalCharge()取代totalAmount:
    class Customer...
    public String statement() {
        int frequentRenterPoints = 0;
        Enumeration rentals = _rentals.elements();
        String result = "Rental Record for * " + getName() + "\n";
        while(rentals.hasMoreElements()) {
           Rental each = (Rental)rentals.nextElement();    //取得一筆租借記錄

         frequentRenterPointers += each.getFrequentRenterPoints();

              result += "\t" + each.getMovie().getTitle() + "\t" +
                 String.valueOf(each.getCharge()) + "\n";
        }
    //   add footer lines(結尾打印)
        result += "Amount owed is " + String.valueOf(getTotalCharge()) + " \n";
        result += "You earned " + String.valueOf(frequentRenterPoints) +
           "frequent renter points";
        return result;
    }

    //  譯注:次即query method
    private double getTotalCharge() {
        double result = 0;
        Enumeration rentals = _rentals.elements();
        while(rentals.hasMoreElements()) {
           Rental each = (Rental)rentals.nextElement();
           result += each.getCharge();
        }
        return result;
    }
    這并不是Replace Temp with Query(120)的最簡單情況。由于totalAmount在循環內部被賦值,我不得不把循環復制到query method中
    posted on 2005-08-15 13:55 ivaneeo 閱讀(222) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: a毛片在线免费观看| 日韩在线观看免费| 亚洲视频免费播放| 亚洲宅男永久在线| 最近免费中文在线视频| 亚洲精品一卡2卡3卡三卡四卡| 久久午夜夜伦鲁鲁片免费无码| 亚洲天天在线日亚洲洲精| 中文字幕亚洲免费无线观看日本| 亚洲av丰满熟妇在线播放| 91精品免费久久久久久久久| 亚洲免费一级视频| 韩国日本好看电影免费看| 小说专区亚洲春色校园| 亚洲视频在线免费| 日韩精品无码免费专区午夜 | 在线观看无码的免费网站| 亚洲国产AV一区二区三区四区 | 黄色成人免费网站| 亚洲日本在线电影| 亚洲国产成人精品91久久久| 青青操免费在线观看| 亚洲最大黄色网址| 免费精品国产自产拍观看| 成人片黄网站色大片免费观看cn | 久久亚洲私人国产精品vA| 中国国产高清免费av片| 亚洲精品福利网泷泽萝拉| 曰批视频免费30分钟成人| 日本亚洲欧美色视频在线播放| 亚洲国产精品毛片av不卡在线| 曰批全过程免费视频在线观看无码| 91久久亚洲国产成人精品性色 | 亚洲AV乱码久久精品蜜桃| 四虎成人免费观看在线网址| 亚洲免费在线观看| 亚洲欧洲校园自拍都市| 四虎影库久免费视频| 最近中文字幕电影大全免费版 | 精品成人一区二区三区免费视频| 亚洲精品无码专区在线在线播放 |