[Effective Java] 아이템57- 지역변수의 범위를 최소화하라

9장에서는 지역변수, 제어구조, 라이브러리, 데이터 타입, 리플렉션과 네이티브 메서드 와 같이 자바 언어의 핵심 요소에 집중한다.

지역변수의 범위를 줄이는 가장 강력한 기법은 “가장 처음 쓰일 때 선언하기”다. 또한, 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. (초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다.)

반복자를 사용할 경우 while보다 for문을 사용하자.

아래와 같이 i 와 i2를 선언했을 경우, i2를 반복하려는 코드 작성 시 여전시 i 변수에 대한 접근이 가능해서 아래 코드는 컴파일에 성공한다. (하지만 버그)

Iterator<Element> i = c.iterator();
while(i.hasNext()) {
  doSomething(i.next());
}

Iterator<Element> i2 = c2.iterator();
while(i.hasNext()) { // 오타로 인한 버그!
  doSomethingElse(i2.next());
}

for문으로 바꿀 경우, 컴파일 조차 되지 않기 때문에 변수의 범위가 최소화되서 보다 안전하다.

for(Iterator<Element> i = c.iterator(); i.hasNext();) {
  Element e = i.next();
}

for(Iterator<Element> i2 = c2.iterator(); i.hasNext();) { // 오류발생!!
  Element e2 = i2.next();
}

지역변수 범위를 최소화하는 또 다른 방법은 메서드를 작게 유지하고 한 가지 기능에 집중하는 것이다. -> 메서드를 기능별로 쪼개면 된다. :fire:

댓글남기기