" 인스턴스 변수보다 로컬 변수를 선호하는 이유는 무엇입니까? " 에 대한 대답에 따르면 변수는 가능한 가장 작은 범위 내에 있어야합니다.
내 해석으로 문제를 단순화하면 다음과 같은 종류의 코드를 리팩터링해야합니다.
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
키워드를 사용해야하는지 여부는 스타일과 의견의 문제입니다 .