De acordo com a resposta aceita em " Racional para preferir variáveis locais em vez de variáveis de instância? ", As variáveis devem viver no menor escopo possível.
Simplifique o problema na minha interpretação, significa que devemos refatorar esse tipo de código:
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();
}
}
em algo como isto:
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();
}
}
mas de acordo com o "espírito" de "variáveis deve viver no menor escopo possível", "nunca tem variáveis" tem escopo menor do que "tem variáveis"? Então, acho que a versão acima deve ser reformulada:
public class Main {
public ABResult getResult() {
return ABFactory.mix(getA(), getB());
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
para que getResult()
não tenha nenhuma variável local. Isso é verdade?
final
palavras-chave ou não.