본문 바로가기
Java/Effective Java 3E

[이펙티브자바 3판] ITEM57. 지역변수의 범위를 최소화하라

by 잭피 2021. 2. 3.

이번장의 핵심은...

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


지역변수의 범위를 최소화

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

 

2. 거의 모든 지역 변수는 선언과 동시에 초기화 해야합니다

→ 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 합니다

 

3. 반복문은 독특한 방식으로 변수 범위를 최소화 합니다

반복 변수의 범위가 반복문의 몸체, 그리고 for 키워드와 몸체 사이의 괄호 안으로 제한합니다

따라서 반복 변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면 while 문보다는 for문을 쓰는 편이 낫습니다

 

컬렉션을 순회할 때 권장하는 관용구

for (Element e : c) {
	... // e로 무언가를 한다
}

반복자를 사용해야 하는 상황

(for-each 대신 전통적인 for문을 쓰는 것이 낫습니다)

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

while 보다는 for문

1. 복사 붙여넣기 오류를 줄여줄 수 있습니다

(for문은 변수 유효범위가 for문 범위와 일치하여 여러 반복문에서 써도 서로 아무런 양향을 주지 않습니다)

2. while문 보다 for문이 짧아서 가독성이 좋습니다

 

지역변수의 범위를 최소화하는 또 다른 반복문 관용구

for (int i=0, n=expensiveComputation(); i<n; i++) {
	... // i로 무언가를 한다
}

주목할 부분은 범위가 정확히 일치하는 두 반복 변수 i,n입니다

i의 한계값을 변수 n에 저장하여, 반복 때마다 다시 계산해야 하는 비용을 없앱니다

같은 값을 반환하는 메서드를 매번 호출한다면 이 관용구를 사용하면 좋습니다

 

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

→ 단순히 메서드를 기능별로 쪼개면 됩니다

 

댓글