《重构:改善既有代码的设计》中提到过很多重构方法,关于重新组织函数的方法有9种。本文介绍:
移除对参数的赋值 remove assignments to parameters
- 名称:移除对参数的赋值 remove assignments to parameters
- 概要:代码对一个参数(函数参数)进行赋值,以一个临时变量取代该参数的位置。
- 动机:传值不会有太大影响。如果传入指针,而且不小心修改了指针地址,就会有大麻烦。尽量不要对函数传入参数值只参与计算,不进行赋值。
- 做法:
- 建立一个临时变量,把待处理的参数值赋予它
- 以“对参数的赋值”为界,将其后所有对此参数的应用点,全部替换为“对此临时变量的引用”
- 修改赋值语句,使其改为对新建之临时变量赋值
- 编译,测试
- 如果代码的语义是按引用传递的,请在调用端检查调用后是否还使用了这个参数。也要检查有多少个按引用传递的参数被赋值后又被使用。请尽量只以return方式返回一个值。如果需要返回的值不止一个,看看可否把需返回的大堆数据变成单一对象,或干脆为每个返回值设计对应的一个独立函数。
- 代码演示:
修改之前的代码:
int Discount(int InputVal, int Quantity, int YearToDate)
{
if (InputVal > 50)
{
InputVal -= 2;
}
return InputVal;
}
修改之后的代码:
int Discount(int InputVal, int Quantity, int YearToDate)
{
int Result = InputVal;
if (InputVal > 50)
{
Result -= 2;
}
return Result;
}