快速业务通道

Eclipse中自动重构实现探索 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
ntRenterPoints ++;    result += "\t" + each.getMovie().getTitle() + "\t" +String.valueOf(thisAmount) + "\n";    totalAmount += thisAmount;  }  result += "Amount owed is " + String.valueOf(totalAmount) + "\n";  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; }

Eclipse中自动重构实现探索(3)

时间:2009-11-02

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

目的:

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()引用的地方替换成直接对getCharge()的引用。选中Customer类的函数amountFor(Rental aRental),在右键菜单中选择"重构/内联",出现参数选择对话框。

选择"确认"按钮,引用amountFor()的地方被替换成对getCharge()

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号