<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-從地獄中重生
    主站蜘蛛池模板: 久久精品国产免费观看| 国产精品亚洲A∨天堂不卡| xxxxx做受大片在线观看免费| 亚洲色婷婷一区二区三区| 2021国内精品久久久久精免费| 色噜噜的亚洲男人的天堂| 亚洲va久久久噜噜噜久久男同| 最近最新的免费中文字幕| 中国国语毛片免费观看视频| 亚洲天堂电影在线观看| 亚洲精品高清一二区久久| 成年黄网站色大免费全看| 国产精品美女久久久免费 | 久久国产成人精品国产成人亚洲| 亚洲电影免费在线观看| 免费在线观看自拍性爱视频| 亚洲日本在线观看网址| 中国亚洲女人69内射少妇| 国内大片在线免费看| 无码中文字幕av免费放dvd| 国产精品久久久久久亚洲小说| 亚洲精品熟女国产| 亚洲中文字幕成人在线| 免费高清资源黄网站在线观看| 无码国产精品一区二区免费16| 免费精品久久久久久中文字幕| 亚洲成年网站在线观看| 自怕偷自怕亚洲精品| 中国亚洲女人69内射少妇| 免费jlzzjlzz在线播放视频| 成人免费午夜无码视频| 亚洲免费观看视频| 男人和女人高潮免费网站| 亚洲精品无码久久久久久| 亚洲午夜精品国产电影在线观看| 亚洲国产精品一区第二页| 亚洲美女在线国产| 亚洲高清成人一区二区三区| 日韩成人免费视频播放| 最近最新中文字幕完整版免费高清| 2021精品国产品免费观看|