Согласно принятому ответу « Обоснование предпочтения локальных переменных переменным экземпляра? », Переменные должны жить в наименьшей возможной области видимости.
Упростите проблему в моей интерпретации, это означает, что мы должны реорганизовать такой код:
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
ключевое слово или нет.