有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果.针对每次赋值,创造一个独立 对应的临时变量
示例
修改前:
$temp = 2 * ($this->height + $this->width);
print($temp);
$temp = $this->height * $this->width;
print($temp);
修改后:
$perimeter = 2 * ($this->height + $this->width);
print($temp);
$area = $this->height + $this->width;
print($area);
动机
临时变量有各种不同用途,其中某些用途会很自然的导致临时变量被多次赋值.循环变量和结构收集变量就是两个典型的例子:
- 循环变量会随循环的每次运行而改变;
- 结果收集变量则将通过整个个函数的运算结果而构成的某个值收集起来.作用通常是累加 字符串拼接 写入流或者向集合添加元素
除了上述两种情况外,临时变量用于保存一段冗长代码的运算结果,以便稍后使用.这种临时变量应该只被赋值一次.如果它们被赋值超过一次,就意味着他们在函数中承担了一个以上的责任.如果临时变量承担多个责任就应该替换为多个临时变量.每个临时变量只承担一种责任.
做法
- 在待分解临时变量的声明及其第一次被赋值处,修改其名称
- 以该临时变量的第二次赋值为界限, 修改此前对该临时变量的所有引用点,让他们引用新的临时变量
- 在第二次赋值处, 重新声明原先那个临时变量
网友评论