Eclipse第四講:重構----實戰(zhàn)重構

          1.方法抽取:Extract Method
          將calcCost中參數校驗部分抽取成方法verify.
          選定代碼--->右鍵Refactor-->Extract Method
          2.重命名:Rename
          (1)重命名類名Test1為CostCalculator
          (2)重命名User為UserInfo
          選定類名-->右鍵Refactor-->Rename
          3.內聯(lián):Inlining
          內聯(lián)方法add
          內聯(lián)原因:調用方法越多,運行速度越慢
          選定方法名("add")-->右鍵Refactor-->Inline
          4.常量抽?。篍xtract Constant
          原因:避免手誤
          將"normal","vip"抽取成常量
          選定字符串-->右鍵Refactor-->Extract Constant
          5.抽取局部變量:Extract Local Voriable
          將user,userType抽取成變量
          原因:減少代碼長度,增加代碼可讀性
          選定要抽取的變量(user.userName)-->右鍵Refactor-->Extract Local Variable
          6.包裝字段:Encapsulate Field
          重構user類,用set,get包裝
          主菜單-->Refactor-->Encapsulate Field
          7.抽取接口:Extract Interface
          選定方法名(calcCost)-->右鍵Refactor-->Extract Interface-->Name:ICcstCalculator
          重構后的代碼為:
          (一)UserInfo.java
          package com.comnew.demo;

          public class UserInfo {
             private String userName;
             private String userType;
             private int amount;
          public void setUserName(String userName) {
           this.userName = userName;
          }
          public String getUserName() {
           return userName;
          }
          public void setUserType(String userType) {
           this.userType = userType;
          }
          public String getUserType() {
           return userType;
          }
          public void setAmount(int amount) {
           this.amount = amount;
          }
          public int getAmount() {
           return amount;
          }
          }
          (二)CostCalculator.java
          package com.comnew.demo;

          public class CostCalculator implements ICostCalculator {
              private static final int VIPPRICE = 0;
           private static final int NORMALPRICE = 10;
           private static final String VIP = "vip";
           private static final String NORMAL = "normal";

           /* (non-Javadoc)
            * @see com.comnew.demo.ICostCalculator#calcCost(com.comnew.demo.UserInfo)
            */
           public int calcCost(UserInfo user)
                {
                 verify(user);
                
                
                 int ret=0;
                 String userType = user.getUserType();
            if(userType.equals(NORMAL))
                 {
                  ret=user.getAmount()+NORMALPRICE;
                 }
                 else if(userType.equals(VIP))
                 {
                  ret=user.getAmount()+VIPPRICE;
                 }
                 else
                 {
                  throw new IllegalArgumentException("useType的類型錯誤!必須未如下幾種:"+NORMAL+","+VIP);
                 }
                 return ret;
                }

           private void verify(UserInfo user) {
            String useType = user.getUserType();
            if(useType==null)
                 {
                  throw new IllegalArgumentException("userType不能為空!");
                 }
                 if(user.getAmount()<=0)
                 {
                  throw new IllegalArgumentException("amount必須大于0!");
                 }
           }

           public static void main(String[] args)
           {
            String userName="tom";
            String userType=NORMAL;
            int amount=20;
            UserInfo user=new UserInfo();
            user.setUserName(userName);
            user.setUserType(userType);
            user.setAmount(amount);
            System.out.println(new CostCalculator().calcCost(user));
           }
          }
          (三)ICostCalculator.java
          package com.comnew.demo;

          public interface ICostCalculator {

           public abstract int calcCost(UserInfo user);

          }

          posted on 2007-04-25 08:37 糖果 閱讀(469) 評論(0)  編輯  收藏 所屬分類: 畢業(yè)設計

          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統(tǒng)計

          公告

          畢業(yè)設計~~加油~~

          常用鏈接

          留言簿(11)

          隨筆分類

          隨筆檔案

          戰(zhàn)友^-^

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 平利县| 三门峡市| 鸡西市| 金溪县| 万源市| 常德市| 阿图什市| 潞西市| 辛集市| 巴林左旗| 镇平县| 新蔡县| 霍邱县| 东方市| 通江县| 荔浦县| 郑州市| 台山市| 长兴县| 东丽区| 永寿县| 崇左市| 庄河市| 陇川县| 五大连池市| 余江县| 门头沟区| 东辽县| 黑水县| 和顺县| 北碚区| 鹤壁市| 荃湾区| 南靖县| 凌云县| 通榆县| 胶州市| 沅江市| 焦作市| 安阳县| 泰宁县|