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

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

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

    ivaneeo's blog

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

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      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(累加常客積點(diǎn))
              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(結(jié)尾打印)
        result += "Amount owed is " + String.valueOf(totalAmount) + " \n";
        result += "You earned " + String.valueOf(frequentRenterPoints) +
           "frequent renter points";
        return result;
    }

    下一件引我注意的事時(shí):thisAmount如今變成多余了.它接受each.getCharge()的執(zhí)行結(jié)果,然后就不再有任何改變.所以我可以運(yùn)用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(累加常客積點(diǎn))
              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(結(jié)尾打印)
        result += "Amount owed is " + String.valueOf(totalAmount) + " \n";
        result += "You earned " + String.valueOf(frequentRenterPoints) +
           "frequent renter points";
        return result;
    }
    我喜歡盡量除去這一類(lèi)臨時(shí)變量.臨時(shí)變量往往形成問(wèn)題.它們會(huì)導(dǎo)致大量參數(shù)被傳來(lái)傳 去,而其實(shí)完全沒(méi)有這種必要.你很容易失去它們的蹤跡,尤其在長(zhǎng)長(zhǎng)的函數(shù)之中更是如此.當(dāng)然我這么做也需付出性能上的代價(jià),例如本例的費(fèi)用就被計(jì)算了兩 次.但是這很容易在Rental class中被優(yōu)化.而且如果代碼有合理的組織和管理,優(yōu)化會(huì)有很好的效果.
    posted on 2005-08-15 13:12 ivaneeo 閱讀(194) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): refactoring-從地獄中重生
    主站蜘蛛池模板: 2019亚洲午夜无码天堂| 中文字幕亚洲综合久久| 国产在亚洲线视频观看| 成人无遮挡裸免费视频在线观看 | 麻豆一区二区三区蜜桃免费| 久久WWW色情成人免费观看| 亚洲avav天堂av在线网爱情| 福利免费观看午夜体检区| 亚洲色欲色欲www在线播放 | 亚洲精品电影在线| 在线人成精品免费视频| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲av无码片区一区二区三区| 无码av免费毛片一区二区| 亚洲人av高清无码| 国产成人aaa在线视频免费观看 | 亚洲欧洲第一a在线观看| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲VA中文字幕无码毛片| 日本黄色动图免费在线观看| 亚洲AV无码一区二区三区DV| 人妻丰满熟妇无码区免费| 亚洲国产成人资源在线软件| 免费看国产成年无码AV片| 亚洲AV综合色区无码一二三区| 亚洲国产日韩在线观频| 免费福利电影在线观看| 亚洲小说区图片区| 男人的天堂亚洲一区二区三区 | av无码免费一区二区三区| 亚洲日韩精品无码专区| gogo全球高清大胆亚洲| a毛片免费播放全部完整| 亚洲理论片中文字幕电影| 女人18毛片a级毛片免费| 一级午夜a毛片免费视频| 666精品国产精品亚洲| 国产成人免费片在线视频观看| 国产精品免费αv视频| 亚洲人成影院在线高清| 亚洲一级片内射网站在线观看|