简述
Splite Temporarily Variable(分解临时变量)指你的程序有某个临时变量被赋值超过一次,它既不是循环变量,又不被用于收集计算结果,这种情况下,针对每次赋值,创造一个独立、对应的临时变量
double temp = 2 * (_height + _width);
System.out.println(temp);
temp = _height * _width;
System.out.println(temp);
改为
final double preimeter = 2 * (_height + _width);
System.out.println(preimeter );
final double area = _height * _width;
System.out.println(area);
动机
临时变量有各种不同用途,其中某些用途会很自然地导致临时变量被多次赋值。“循环变量”和“结果收集变量”。
除了这两种情况,还有很多临时变量用于保存一段冗长代码的运算结果,以便稍后使用。如果它们被赋值超过一次,就意味它们在函数中承担了一个以上责任,因此要拆分。
做法
- 在待分解临时变量的声明以其第一次被赋值处,修改其名称
- 将新的临时变量声明为final
- 以该临时变量的第二次赋值动作为界,修改此前对该临时变量的所有引用点,让它们引用新的临时变量。
- 在第二次赋值处,重新声明原先那个临时变量。
- 编译、测试
- 重复上述过程。每次都在声明处对临时变量改名,并修改下次赋值之前的引用点。