根据有关“ 原理变量比实例变量更喜欢局部变量? ” 的公认答案,变量应处于尽可能小的范围内。
将问题简化为我的解释,这意味着我们应该重构这种代码:
public class Main {
private A a;
private B b;
public ABResult getResult() {
getA();
getB();
return ABFactory.mix(a, b);
}
private getA() {
a = SomeFactory.getA();
}
private getB() {
b = SomeFactory.getB();
}
}
变成这样的东西:
public class Main {
public ABResult getResult() {
A a = getA();
B b = getB();
return ABFactory.mix(a, b);
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
但是,根据“变量应该尽可能地处于最小范围内”的“精神”,难道“没有变量”的范围是否比“拥有变量”的范围小?所以我认为上面的版本应该重构:
public class Main {
public ABResult getResult() {
return ABFactory.mix(getA(), getB());
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
因此getResult()
根本没有任何局部变量。真的吗?
final
关键字,这都是风格和意见的问题。