<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
    搬移[金額計算]代碼
    觀察amountFor()時,我發現這個函數使用了來自Rental class的信息,卻沒有使用來自Customer class的信息.

    class Customer...
    public double amountFor(Rental aRental) {
        double result = 0;
        switch(aRental.getMovie().getPriceCode()) {   //取得影片出租價格
              case Movie.REGULAR:   //普通片
                 result+= 2;
                 if(aRental.getDaysRented() > 2)
                    result+= (aRental.getDaysRented() - 2) * 1.5;
                 break;
              case Movie.NEW_RELEASE:   //新片
                 result+= aRental.getDaysRented() * 3;
                 break;
              case Movie.CHILDRENS:   //兒童片
                 result+= 1.5;
                 if(aRental.getDaysRented() > 3)
                    result+= (aRental.getDaysRented() - 3) * 1.5;
                 break;
           }
        return result;
    }
    這立刻使我懷疑它是否被放錯了位置.大多數情況下,函數應該放在它使用的數據的所屬object(或說class)內,所以amountFor()應該移 到Rental class去.為了這么做,我要運用Move Method(142).首先把代碼拷貝到Rental class內,調整代碼使之適應新家,然后重新編譯.下面這樣:

    class Rental...
    double getCharge() {
        double result = 0;
        switch(getMovie().getPriceCode()) {   //取得影片出租價格
              case Movie.REGULAR:   //普通片
                 result+= 2;
                 if(getDaysRented() > 2)
                    result+= (getDaysRented() - 2) * 1.5;
                 break;
              case Movie.NEW_RELEASE:   //新片
                 result+= getDaysRented() * 3;
                 break;
              case Movie.CHILDRENS:   //兒童片
                 result+= 1.5;
                 if(getDaysRented() > 3)
                    result+= (getDaysRented() - 3) * 1.5;
                 break;
           }
        return result;
    }
    這個例子里,[適應新家]意味去掉參數.此外,我還要在搬移的同時變更函數名稱.

    現在我可以測試新函數是否正常工作.只要改變Customer.amountFor()函數內容,使它委托(delegate)新函數即可:

    class Customer...
        private double amountFor(Rental aRental) {
           return aRental.getCharge();
        }
    posted on 2005-08-15 11:03 ivaneeo 閱讀(185) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 亚洲国产成人精品无码区在线观看 | 青青久久精品国产免费看| 国产一卡二卡3卡四卡免费| 亚洲美女免费视频| 69影院毛片免费观看视频在线| 亚洲国产女人aaa毛片在线| 中文字幕久精品免费视频| 情人伊人久久综合亚洲| 日本一区二区免费看| 亚洲国产国产综合一区首页| 亚洲一级免费毛片| 亚洲国产成人99精品激情在线| 大地资源二在线观看免费高清 | 亚洲AV无码专区日韩| 一级黄色毛片免费看| 亚洲小说区图片区另类春色| 国产麻豆一精品一AV一免费| 亚洲五月六月丁香激情| 噼里啪啦免费观看高清动漫4| 2020亚洲男人天堂精品| 四虎永久成人免费| 一个人免费播放在线视频看片| 亚洲人JIZZ日本人| 久久精品国产免费观看三人同眠| 中文字幕亚洲综合久久综合| 免费一级毛片一级毛片aa| 久久久久久久国产免费看| 久久久久亚洲AV无码专区体验| 成人毛片免费观看视频| g0g0人体全免费高清大胆视频| 久久亚洲AV午夜福利精品一区 | 亚洲成色在线综合网站 | 男女交性永久免费视频播放 | 黄网站色视频免费看无下截| 亚洲人成影院在线无码按摩店| 四虎影视成人永久免费观看视频 | 国产亚洲精品成人AA片| 日韩亚洲国产二区| 99久9在线|免费| 日韩大片免费观看视频播放| 久久久久亚洲精品美女|