| 网站首页 | 行业资讯 | 操作系统 | 网络技术 | 网页设计 | 平面设计 | 媒体制作 | 编程开发 | 
 | 办公软件 | 网络安全 | 电脑技术 | 数 据 库 | 课程在线 | 成功案例 | 项目合作 | 团队简介 | 
蓝色极速感谢大家的支持!站长:干戈 QQ:495979847     IAS网上答疑系统V1.0发布  [Sunpeople  2007年9月15日]        
  您现在的位置: 蓝色极速 >> 编程开发 >> Java >> 教程正文
 

没有任何图片教程

        ★★★ 
Eclipse中自动重构实现探索
作者:未知    教程来源:网络    点击数:    更新时间:2007-5-12    
Movie().getPriceCode())==Movie.NEW_RELEASE &&each.getDaysRented()>1)
   frequentRenterPoints ++;

   result += " " + each.getMovie().getTitle() + " " +String.valueOf(thisAmount) + " ";
   totalAmount += thisAmount;
  }

  result += "Amount owed is " + String.valueOf(totalAmount) + " ";
  result += "You earned " + String.valueOf(frequentRenterPoints) + " frequent renter points";

  return result;
  }

  /**
  * @param each
  * @return
  */
  private double amountFor(Rental each) {
  double thisAmount = 0;
  switch(each.getMovie().getPriceCode()){
  case Movie.REGULAR:
   thisAmount += 2;
   if(each.getDaysRented()>2)
    thisAmount += (each.getDaysRented()-2)*1.5;
   break;

  case Movie.NEW_RELEASE:
   thisAmount += each.getDaysRented()*3;
   break;

  case Movie.CHILDRENS:
   thisAmount += 1.5;
   if(each.getDaysRented()>3)
    thisAmount += (each.getDaysRented()-3)*1.5;
   break;
  }
  return thisAmount;
  }

  2、选中amountFor()的参数each,在右键菜单中选择"重构/重命名",在对话框中输入新的名称:aRental,选择确定,amountFor()中所有each的引用全部被替换成新的名称。用同样的办法修改amountFor()中的局部变量thisAmount为result。重构后的amountFor()代码如下:

  /**
  * @param aRental
  * @return
  */
  private 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;
  } 

  三、重构第二步:搬移"金额计算"代码

  目的:

  1、 将函数amountFor()转移到Rental类中,并更名为getCharge()。

  2、 更新并替换所有对amountFor()的引用。

  重构方法:

  Move Method
  Change Method signatrue
  Inline Method
  Inline Temp

  方法:

  1、选中函数amountFor()的定义,在右键菜单中选择"重构/移动",显示参数设置对话框。把新方法名改成getCharge。按下"确定"按钮,Customer Class中的amountFor()函数被移动到Rental Class中,并更名为:getCharge()。


  同时eclipse自动在Customer的amountFor()函数中添加一行对新函数的"委托"代码:

  private double amountFor(Rental aRental) {
  return aRental.getCharge();
  }

  这行代码会产生编译错误,原因是amountFor()的private型被传递到了新的方法中:

  /**
  * @param this
  * @return
  */
  private double getCharge() {
  ……
  }

  2、继续重构!选中getCharge()方法,在右键菜单中选择"重构/更改方法特征符",弹出参数选择对话框,把访问修饰符从private改成public。Eclipse的编译错误提示自动消失。


  3、回到Customer类,把所有对amountFor()引

上一页  [1] [2] [3] [4] [5] 下一页

教程录入:Sunpeople    责任编辑:Sunpeople  
  • 上一个教程:

  • 下一个教程: 没有了

  •      
    点击申请点击申请点击申请点击申请点击申请点击申请点击申请
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |

    Copyright(C)2006-2009 Exploit Team All Rights Reserved
    QQ:495979847 网络备案号:陇ICP备07001585号