JAVA/Effective Java

메서드- 규칙 45 지역 변수의 유효범위를 최소화하라.

반응형

지역 변수의 유효 범위를 최소화하면 가독성과 유지보수성이 좋아지고, 오류 발생 가능성도 줄어든다.

C 에서는 선언부에 모든 변수를 먼저 작성한다.
하지만 자바에서는 어디에서나 작성이 가능하다. 이것이 핵심이다. 지역변수의 유효범위를 최소화하는 가장 강력한 기법은, 처음으로 사용하는 곳에서 선언하는 것이다.

선언하기 전에 적으면 프로그램의 의도를 알고자 소스 코드를 읽는 사람에게 혼란을 야기할 수 있기에 실제로 변수가 사용될 때쯤 되면, 그 변수의 사용에 대해 잊어먹게된다.

그리고 또 다른 이유로, 문장의 초기에 선언하게되면 변수의 사용 가능 범위가 증가하게 된다.(변수는 선언된 순간 부터 문장의 종료까지 유효하다.)

그리고 반복문은 for문장이 while보다 좋다. 
그 이유는 for의 () 안에 선언된 변수는 for문이 종료되면서 모든 역할을 다하게 되지만, while은 외부에서 변수를 선언해야 하기 때문에 컴파일시가 아닌 런타임시에 버그가 발생할 수도 있고, 번잡스럽다.

또한 아래의 예를 보면 알겠지만 for문이 while문장보다 더 간결하여 보기도 좋다.


1
2
3
4
5
6
7
8
9
for (Element e : c) {
    doSomething(e);
}
 
Iterator<Element> i = c1.iterator();
Iterator<Element> i2 = c2.iterator();
while (i.hasNext()) { // i라는 위의 선언되었었던 다른 변수를 사용하게 되면서 버그발생
  doSimeThing(i2.next());
}
cs



그리고 지역 변수의 유효범위를 최소화하는 마지막 전략은 메서드의 크기를 줄이고 특정한 기능에 집중하는것이다.

쉽게 말해서 두 가지 서로 다른 기능을 한 메서드 안에 넣어두면 필요한 지역 변수의 유효범위가 다른 기능까지 확장되는 문제가 생기기 때문에 하나의 메서드는 하나의 동작만 해야한다는 단일 책임 원칙을 잘 따라야 한다.



출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙45인용.

반응형