重构读书笔记-10_2-Add_Parameter+10_3-R

2019-07-17  本文已影响0人  MR_Model

重构第十章

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下,对于参数不再需要,可以考虑移除掉多余的参数。

注意

重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
上一篇下一篇

猜你喜欢

热点阅读