重构读书笔记-6_5-Split Temporary Variable

重构第六章

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口一些组件的调用,一步步判断结果,这个应该可以算是一种集用临时变量。

注意

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

你可能感兴趣的:(重构读书笔记-6_5-Split Temporary Variable)