<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 閱讀(189) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 亚洲色大成网站www永久| 亚洲一区二区三区影院| 亚洲欧洲另类春色校园网站| 久爱免费观看在线网站| 亚洲AV无码久久寂寞少妇| 一区二区三区无码视频免费福利 | 亚洲AV无码专区电影在线观看| 好湿好大好紧好爽免费视频 | 亚洲av无码精品网站| 九九美女网站免费| 无遮挡呻吟娇喘视频免费播放| 色播在线永久免费视频| 亚洲精品无码中文久久字幕| 日韩在线天堂免费观看| 男男gvh肉在线观看免费| 亚洲午夜无码片在线观看影院猛| av成人免费电影| 亚洲Av无码专区国产乱码DVD| 中文字幕免费视频一| 亚洲人成www在线播放| 四虎成人精品在永久免费| 一区二区3区免费视频| 久久精品亚洲精品国产色婷 | 久久久久成人精品免费播放动漫| 亚洲福利视频一区二区三区| 99久久这里只精品国产免费 | 日本高清免费观看| tom影院亚洲国产一区二区| 最新69国产成人精品免费视频动漫 | 成在线人免费无码高潮喷水| 色噜噜综合亚洲av中文无码| 性做久久久久久久免费看| 曰批免费视频播放在线看片二| 亚洲s色大片在线观看| 日本精品人妻无码免费大全| 免费又黄又爽又猛大片午夜| 亚洲国产精品lv| 四只虎免费永久观看| 亚洲精品免费在线观看| 精品久久久久久亚洲综合网| 亚洲级αV无码毛片久久精品|