重构第六章
6.Split Temporary Variable(分解临时变量)
针对每一个赋值,创造一个独立的、对应的临时变量
你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不是集用临时变量
Example:
double temp = 2 * (_height+ _width);
System.out.println(temp);
temp = _height * _width;
System.out.println(temp);
Analyse:
归根到底,Split Temporary Variable(分解临时变量)重构代码的原因是为了使临时变量具有单一的职责,在其他人阅读时,能够提供更加好的可读性。
End:
final double perimeter = 2 * (_height+ _width);
System.out.println(temp);
final double area = _height * _width;
System.out.println(temp);
Conclusion:
Split Temporary Variable(分解临时变量)可以使得程序中临时变量的值具有单一职责,可是如果代码过长,可能造成临时变量过多的情况,这个时候可以使用Extract Method(提炼函数)或者Replace Temp with Query(查询取代变量)减少临时变量的个数,使得程序结构清楚
理智使用
在某些函数中,一个临时变量的赋值语句可能有多个,但是其运行时的赋值可能就1个,所以要根据代码对情况进行一定的判断,不能太果断。
如: bool getFile(const string& str){
bool res = false;
do {
res = isFileExist(str);
if(res == false) {
break;
}
res = //处理步骤;
if(res == false) {
break;
}
}while(false);
return res ;
}
其中比较典型的是C++中对COM口一些组件的调用,一步步判断结果,这个应该可以算是一种集用临时变量。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论