[Why]
지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다.
[How]
1. 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 '가장 처음 쓰일 때 선언하기'다.
- 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어진다.
- 변수를 실제로 사용하는 시점엔 타입과 초깃값이 기억나지 않을 수도 있다.
2. 거의 모든 지역변수는 선언과 동시에 초기화해야 한다.
- 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다.
- try-catch문은 이 규칙에서 예외다.
- 변수를 초기화하는 표현식에서 검사 예외를 던질 가능성이 있다면 try 블록 안에서 초기화해야 한다.
(그렇지 않으면 예외가 블록을 넘어 메서드에까지 전파된다) - 변수 값을 try 블록 바깥에서도 사용해야한다면 try 블록 앞에서 선언해야 한다.
- 변수를 초기화하는 표현식에서 검사 예외를 던질 가능성이 있다면 try 블록 안에서 초기화해야 한다.
3. 반복문에서는 반복 변수(loop variable)의 범위가 반복문의 몸체 사이의 괄호 안으로 제한된다.
- 반복 변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면 while 문보다는 for 문을 쓰는 편이 낫다.
- 변수 유효 범위가 for 문 범위와 일치하여 똑같은 이름의 변수를 여러 반복문에서 써도 서로 아무런 영향을 주지 않는다.
- while 문보다 짧아서 가독성이 좋다.
for (int i=0, n=expensiveComputation(); i<n; i++) {
... // i로 무언가를 한다.
}
- 반복 여부를 결정짓는 변수 i의 한계값을 변수 n에 저장하여, 반복 때마다 다시 계산해야 하는 비용을 없앴다.
- 같은 값을 반환하는 메서드를 매번 호출한다면 이 관용구를 사용하기 바란다.
4. 메서드를 작게 유지하고 한 가지 기능에 집중한다.
'독서찰기(讀書札記) > 이펙티브 자바' 카테고리의 다른 글
[아이템 59] 라이브러리를 익히고 사용하라 (0) | 2022.03.25 |
---|---|
[아이템 58] 전통적인 for 문보다는 for-each 문을 사용하라 (0) | 2022.03.24 |
[아이템 55] 옵셔널 반환은 신중히 하라 (0) | 2022.03.18 |
[아이템 54] null이 아닌, 빈 컬렉션이나 배열을 반환하라 (0) | 2022.03.17 |
[아이템 53] 가변인수는 신중히 사용하라 (0) | 2022.03.17 |