<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.statement():
    public String statement() {
        double totalAmount = 0;
        int frequentRenterPoints = 0;
        Enumeration rentals = _rentals.elements();
        String result = "Rental Record for * " + getName() + "\n";
        while(rentals.hasMoreElements()) {
           double thisAmount = 0;
           Rental each = (Rental)rentals.nextElement();    //取得一筆租借記錄

           thisAmount = each.getCharge();

           //   add frequent renter points(累加常客積點)
              frequentRenterPoints ++;
              if((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) &&
                 each.getDaysRented() > 1)
                 frequentRenterPoints ++;

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

    下一件引我注意的事時:thisAmount如今變成多余了.它接受each.getCharge()的執行結果,然后就不再有任何改變.所以我可以運用Replace Temp with Query(120)把thisAmount除去:
    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();    //取得一筆租借記錄

           //   add frequent renter points(累加常客積點)
              frequentRenterPoints ++;
              if((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) &&
                 each.getDaysRented() > 1)
                 frequentRenterPoints ++;

              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;
    }
    我喜歡盡量除去這一類臨時變量.臨時變量往往形成問題.它們會導致大量參數被傳來傳 去,而其實完全沒有這種必要.你很容易失去它們的蹤跡,尤其在長長的函數之中更是如此.當然我這么做也需付出性能上的代價,例如本例的費用就被計算了兩 次.但是這很容易在Rental class中被優化.而且如果代碼有合理的組織和管理,優化會有很好的效果.
    posted on 2005-08-15 13:12 ivaneeo 閱讀(194) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 又粗又大又长又爽免费视频| 91成年人免费视频| 午夜毛片不卡高清免费| 中文字幕亚洲免费无线观看日本| 亚洲精品视频免费观看| 亚洲成a人无码av波多野按摩| 另类小说亚洲色图| 亚洲AV无码乱码在线观看牲色| 无遮挡国产高潮视频免费观看| 吃奶摸下高潮60分钟免费视频 | 四虎成人精品一区二区免费网站| 亚洲国产精品成人精品软件| 九九精品免费视频| 国内精品久久久久影院亚洲| 日本成人免费在线| 国产成人亚洲毛片| 在线观看国产区亚洲一区成人 | 本免费AV无码专区一区| 亚洲色婷婷一区二区三区| 99久久99这里只有免费的精品| 国产av天堂亚洲国产av天堂| 污污网站免费观看| 亚洲人成伊人成综合网久久| 午夜视频免费成人| 粉色视频免费入口| 亚洲精品无码AV人在线播放| 久久精品无码专区免费青青| 香蕉大伊亚洲人在线观看| 国产免费久久精品久久久| 男女拍拍拍免费视频网站 | 亚洲另类古典武侠| 国产男女猛烈无遮挡免费视频| 午夜在线免费视频 | 亚洲第一成人在线| 国产男女猛烈无遮挡免费网站 | 激情97综合亚洲色婷婷五| 成全在线观看免费观看大全| 亚洲AV综合色区无码二区偷拍| 四虎1515hm免费国产| 久久免费区一区二区三波多野| 亚洲人成人网毛片在线播放|