重构第十章
2.Add Parameter(添加参数)
某个函数需要从调用端获得更多信息,为此函数添加一个对象参数,让该对象带进函数所需信息。
Example:
double getIncome(int CustomerNum) {
return CustomerNum * profit
}
Analyse:
当profit的值跟随不同种类的顾客变化的时候,可能需要传入顾客的种类型别码
End
double getIncome(int CustomerNum, CustomerType type) {
switch (type) {
case NEW_CUSTOMER : return CustomerNum * 0.98;
case OLD_CUSTOMER : return CustomerNum * 0.7;
...
}
}
Conclusion:
Add Parameter(添加参数)是跟随着业务需求经常使用的重构方法。但是,它不一定是最适合的方法。
在使用Add Parameter(添加参数)时,你必须确定新参数是否可以通过之前的参数进行获得;获得的参数在程序中究竟有何作用;这个函数是否应该属于拥有该信息的那个对象所有等等问题。
示例中的问题,其实将getIncome归入Cusomer class也可以,使用多态的方法,返回新老顾客利润的不同。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
3.Remove Parameter(移除参数)
函数本体不再需要某个参数,将该参数去除。
Conclusion:
Remove Parameter(移除参数)和Add Parameter(添加参数)是一个相反操作的重构方法,如果函数移动到相应的class下,对于参数不再需要,可以考虑移除掉多余的参数。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论