"클래스와 멤버 접근 권한을 최소화하라(Item 15)"와 비슷한 취지다.
지역 변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지면서 오류 가능성은 낮아진다.
📌 지역 변수 선언 시점
- 가장 처음 쓰일 때 선언하라.
- 미리 선언해두면 어수선해지다.
- 실제 사용 시점에 초깃값이 기억나지 않을 수 있다.
- 의도하지 않은 범위 앞 혹은 뒤에서 변수를 사용하게 될 경우 끔찍한 결과로 이어진다.
- 거의 모든 지역 변수는 선언과 동시에 초기화하라.
- 초기화에 필요한 정보가 충분하지 않다면 선언을 미뤄라.
- try-catch문은 해당 규칙에서 예외지만, 변수 초기화 표현식에서 검사 예외를 던질 가능성이 있다면 try 블록 안에서 초기화하라. (그래야 예외가 메서드에 전파되는 걸 막을 수 있다.)
- 설령 try 블록 바깥에서 사용하더라도, 블럭 바로 앞에서 선언하라.
for (Element e : c) { ... }
for (int i = 0; n = expensiveComputation(); i < n; i++) { ... }
for (Iterator<Element> i = c.iterator(); i.hasNext();) {
Element e = i.next();
...
}
for (Iterator<Element> i2 = c.iterator(); i.hasNext();) { // 컴파일 오류
Element e2 = i2.next();
...
}
- 반목문이 종료된 후에도 반복 변수가 필요한 게 아니라면 while문 보다는 for문을 쓰는 것이 좋다.
- while문에서 실수로 이전 반복 변수 값을 사용하게 될 수도 있다.
- for문은 반복문이 종료되면 사용한 원소와 유효 범위가 반복문 종료와 함께 끝난다.
- for문은 반복 변수와 관련된 변수들을 가독성 있게 정의할 수 있다.
- 메서드를 작게 유지하고 한 가지 기능에 집중하라.
- 하나의 메서드가 여러 일을 하면, 다른 기능을 수행하는 코드에서 접근할 수 있게 된다.
- 메서드를 기능 별로 쪼개면 이런 일은 발생하지 않는다.