重置eclipse布局,eclipse项目结构调整
1检查源函数中使用的所有特性(包括字段和函数)。
2检查子类和父类是否也定义了这个函数。
3先委托,再根据实际情况决定是否将对源函数的调用替换为对目标函数的调用。
Eclipse refactor菜单下直接有一个Move选项,可以直接用来完成Move方法重构。但在实际应用中,还是有一些细微的区别,下面详细解释:
默认情况:[Move]方法,必须要求目标类对象必须是源类中的成员变量,否则找不到目标对象。另外,在移动之后,默认情况下源类对象总是被用作函数参数。
特例一:目标类是源类的内部类,实际上使用了复制代码的方法。
特例二:[move][rename][change method signature]的方法实际上是用于目标类成员中带有活动类的对象。
特例三:有时只需要传入源类的一个成员变量作为函数参数,但不需要传入整个源类对象。使用实际的[提取局部变量][引入参数]/[提取方法][移动],
也可以使用[提取局部变量][提取方法][内联][移动]。
双银行收费(账户账户){
双结果=4.5;
如果(账号。_daysOverdrawn 0)
result=account . overdraft charge();
返回结果;
}
//1.应用【提取局部变量】将函数中需要移动的成员变量替换为局部变量,同时不可避免的会加入类似“localVariable=_field”的赋值语句。
公共类别帐户{
双倍透支费(){
finalintdaysOverdrawn=_ daysOverdrawn;
if (_type.isPremium()) {
双结果=10;
if (daysOverdrawn 7)
结果=(daysOverdrawn-7)* 0.85;
返回结果;
}否则
returndaysOverdrawn * 1.75
}
//2.添加赋值语句“FINALITDAYSOVERDRAWN=_ DAYSOVERDRAWN;”,选择字段 _daysOverdrawn ,应用引入参数,并将该字段作为函数参数传入。
公共类别帐户{
双倍透支费(int dayOverdrawn) {
最后的
//3.删除赋值语句“localVariable=_field”。
公共类别帐户{
双倍透支费(int dayOverdrawn) {
最后的
=========================================================================================
还有一种更通用的调整方法,其核心思想是将旧方法接口委托给新方法,然后应用内联将所有旧方法替换为新方法,最后移动。
第一步同上,第二步改为使用[Extract Method],并更改赋值语句 finalintdaysoverdrawn=_ dayoverstrawn;以下部分提取为与目标函数同名的新函数,均为透支费。
公共类别帐户{
双倍透支费(){
final int daysOverdrawn=_ daysOverdrawn;
返回透支费用(daysOverdrawn);
}
私人双倍透支费(最终int daysOverdrawn) {
if (_type.isPremium()){
双结果=10;
if (daysOverdrawn 7)
结果=(daysOverdrawn-7)* 0.85;
返回结果;
}否则
return daysOverdrawn * 1.75
}
//3.使用[Inline]替换目标函数。
首先将[Inline]应用于daysOverdrawn
双倍透支费(){
最后的
调用原始overdraftCharge()的地方自动调整为overdraftCharge(_daysOverdrawn)
result=overdraft charge();-result=overdraft charge(_ daysOverdrawn);
超过
以上完整的源代码可以在这里下载。