Secondo la risposta accettata su " Razionale per preferire le variabili locali alle variabili di istanza? ", Le variabili dovrebbero vivere nel più piccolo ambito possibile.
Semplifica il problema nella mia interpretazione, significa che dovremmo refactoring questo tipo di codice:
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();
}
}
in qualcosa del genere:
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();
}
}
ma secondo lo "spirito" di "le variabili dovrebbero vivere nel più piccolo ambito possibile", "non avere mai variabili" ha un ambito più piccolo di "avere variabili"? Quindi penso che la versione sopra dovrebbe essere rifattorizzata:
public class Main {
public ABResult getResult() {
return ABFactory.mix(getA(), getB());
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
quindi getResult()
non ha alcuna variabile locale. È vero?
final
parola chiave o meno.