기록이 힘이다.

[이펙티브 자바]아이템 57 지역변수의 범위를 최소화하라 본문

JAVA

[이펙티브 자바]아이템 57 지역변수의 범위를 최소화하라

dev22 2023. 4. 11. 21:09
728x90

지역변수의 유효 범위를 최소로 줄이면 코드 가족성과 유지보수성이 높아지고 오류 가능성은 낮아진다.

지역변수의 범위를 줄이는 가장 강력한 기법은 역시 ‘가장 처음 쓰일 때 선언하기’다.

컬렉션이나 배열을 순회하는 권장 관용구

for(Element e: c){
  ...
}

반복자를 사용해야 하는 상황이면 for-each 문 대신 전통적인 for문을 쓰는 것이 낫다.

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

for문은 변수 유효 범위가 for문의 범위와 일치하여 똑같은 이름의 변수를 여러 반복문에서 써도 서로 아무런 영향을 주지 않는다.

<while문>
Iterator<Element> i = c.iterator();
while(i.hasNext()){
	doSomething(i.next());
}
...
Iterator<Element> i2 = c2.iterator();
while(i.hasNext()){   //버그 - 위와 동일 변수 사용
	doSometingElse(i2.next());
}

<for문>
for(Iterator<Element> i = c.iterator(); i.hasNext();){
	Element e = i.next();
  ...// e와 i로 무언가를 한다.
}

//다음 코드는 "i를 찾을 수 없다"는 컴파일 오류를 낸다.
for(Iterator<Element> i2 = c2.iterator(); i.hasNext();){
	Element e2 = i2.next();
  ...// e2와 i2로 무언가를 한다.
}

지역변수 범위를 최소화하는 마지막 방법은 메서드를 작게 유지하고 한 가지 기능에 집중하는 것이다.