<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-從地獄中重生
    主站蜘蛛池模板: 成人午夜免费福利视频| 亚洲一区精彩视频| 久久精品国产亚洲av影院| 亚洲熟妇无码av另类vr影视| 一个人免费观看日本www视频| 国产在线观看免费视频软件| 在线观看无码的免费网站| 亚洲精品你懂的在线观看| 国产亚洲精品VA片在线播放| 国产免费一级高清淫曰本片| 日日麻批免费40分钟日本的| 久久精品a亚洲国产v高清不卡| 日本一卡精品视频免费| 免费一级毛片正在播放| 亚洲高清视频免费| 乱人伦中文视频在线观看免费| 久久免费观看国产精品| 亚洲福利中文字幕在线网址| 一本天堂ⅴ无码亚洲道久久| 在线观看免费亚洲| 亚洲自偷自偷在线成人网站传媒 | 久9热免费精品视频在线观看| 日本最新免费不卡二区在线| 一区二区三区免费在线视频 | 中文字幕亚洲男人的天堂网络 | 岛国精品一区免费视频在线观看| 成人毛片手机版免费看| 久久水蜜桃亚洲av无码精品麻豆| 亚洲免费观看在线视频| 夜夜亚洲天天久久| 成年大片免费视频| 亚洲五月午夜免费在线视频| 免费午夜爽爽爽WWW视频十八禁| 国产免费AV片在线观看播放| 亚洲自偷自拍另类12p| 国产青草视频免费观看97| 33333在线亚洲| 亚洲欧洲一区二区三区| 日韩少妇内射免费播放| 亚洲AV人无码综合在线观看| a级片免费观看视频|