ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          范例(Examples)
          我們從一個簡單計算開始:
          double price() {
             //price is base price - quantity discount + shipping
             return _quantity * _itemPrice -
                Math.max(0, _quantity - 500) * _itemPrice * 0.05 +
                Math.min(_quantity * _itemPrice * 0.1, 100.0);
          }

          這段代碼還算簡單,不過我可以讓它變得更容易理解.首先我發(fā)現(xiàn),底價(base price)等于數(shù)量(quantity)乘以單價(item price).于是我把這一部分計算的結果放進一個臨時變量中:
          double price() {
             //price is base price - quantity discount + shipping
             final double basePrice = _quantity * _itemPrice;
             return basePrice -
                Math.max(0, _quantity - 500) * _itemPrice * 0.05 +
                Math.min(_quantity * _itemPrice * 0.1, 100.0);
          }

          稍后也用上了[數(shù)量乘以單價]運算結果,所以我同樣將它替換為basePrice臨時變量:
          double price() {
             //price is base price - quantity discount + shipping
             final double basePrice = _quantity * _itemPrice;
             return basePrice -
                Math.max(0, _quantity - 500) * _itemPrice * 0.05 +
                Math.min(basePrice * 0.1, 100.0);
          }


          然后,我將批發(fā)折扣(quantity discount)的計算提煉出來,將結果賦予臨時變量quantityDiscount:
          double price() {
             //price is base price - quantity discount + shipping
             final double basePrice = _quantity * _itemPrice;
             final double quantityDiscount = Math.max(0, _quantity - 500) * 
                                                                _itemPrice * 0.05;

             return basePrice - quantityDiscount  +
                Math.min(basePrice * 0.1, 100.0);
          }

          最后,我再把運費(shipping)計算提煉出來,將運算結果賦予臨時變量shipping.同時我還可以刪掉代碼中的注釋,因為現(xiàn)在代碼已經可以完美表達自己的意義了:
          double price() {
             //price is base price - quantity discount + shipping
             final double basePrice = _quantity * _itemPrice;
             final double quantityDiscount = Math.max(0, _quantity - 500) * 
                                                                _itemPrice * 0.05;
             final double shipping = Math.min(basePrice * 0.1, 100.0);
             return basePrice - quantityDiscount  + shipping;
          }

          posted on 2005-08-25 16:46 ivaneeo 閱讀(145) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 阿合奇县| 石楼县| 冀州市| 塔河县| 平远县| 于田县| 德昌县| 邵阳县| 文成县| 凤翔县| 隆子县| 应用必备| 建昌县| 平潭县| 防城港市| 洞口县| 恭城| 玛沁县| 白河县| 江津市| 兰考县| 新邵县| 桂东县| 广平县| 周至县| 延吉市| 东乌| 荥经县| 高雄县| 资溪县| 冕宁县| 涿州市| 尤溪县| 六盘水市| 嫩江县| 茌平县| 宜州市| 晴隆县| 海口市| 松滋市| 灵川县|