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

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

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

    ivaneeo's blog

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

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

    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(結(jié)尾打印)
        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(結(jié)尾打印)
        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在循環(huán)內(nèi)部被賦值,我不得不把循環(huán)復(fù)制到query method中
    posted on 2005-08-15 13:55 ivaneeo 閱讀(227) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 麻豆亚洲av熟女国产一区二| 精品国产亚洲男女在线线电影 | 久久九九久精品国产免费直播| 美女黄网站人色视频免费国产| 亚洲午夜在线播放| 最新猫咪www免费人成| 亚洲综合激情五月丁香六月| 成人免费在线观看网站| 亚洲国产成人无码AV在线| 精品国产免费观看久久久| 国产成人亚洲毛片| 亚洲一区二区三区在线视频| 久久精品成人免费国产片小草| 亚洲av无码片在线播放| 97免费人妻在线视频| 亚洲国产成人精品激情| 精品少妇人妻AV免费久久洗澡| 美女羞羞视频免费网站| 中文字幕精品亚洲无线码一区 | 亚洲最大的成人网站| 日韩午夜免费视频| sihu国产精品永久免费| 老司机亚洲精品影院| 亚洲人成电影网站免费| 免费播放国产性色生活片| 亚洲乱码一区二区三区在线观看 | 天天摸夜夜摸成人免费视频| 亚洲AV日韩AV无码污污网站| 国产国拍亚洲精品福利 | 国产免费不卡v片在线观看| 亚洲av日韩av永久在线观看| 亚洲午夜久久久久久久久久| 最近的中文字幕大全免费8| 亚洲成av人在线观看网站| 亚洲精品第一国产综合境外资源 | 日本亚洲欧美色视频在线播放 | 亚洲国产欧美日韩精品一区二区三区| 免费人成年轻人电影| 日韩免费电影网站| 亚洲av中文无码字幕色不卡 | 国产精品久久久久久久久免费|