Zgodnie z przyjętą odpowiedzią „ Racjonalne uzasadnienie preferowania zmiennych lokalnych zamiast zmiennych instancji? ” Zmienne powinny mieć możliwie najmniejszy zakres.
Uprość problem do mojej interpretacji, oznacza to, że powinniśmy zmienić kod tego rodzaju:
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();
}
}
w coś takiego:
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();
}
}
ale zgodnie z „duchem” zmiennych zmienne powinny żyć w najmniejszym możliwym zakresie, czy „nigdy nie mieć zmiennych” ma mniejszy zakres niż „mieć zmiennych”? Myślę więc, że powyższa wersja powinna zostać refaktoryzowana:
public class Main {
public ABResult getResult() {
return ABFactory.mix(getA(), getB());
}
private getA() {
return SomeFactory.getA();
}
private getB() {
return SomeFactory.getB();
}
}
więc getResult()
nie ma żadnych lokalnych zmiennych. Czy to prawda?
final
słowa kluczowego, czy nie.