"클래스와 멤버 접근 권한을 최소화하라(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문은 반복 변수와 관련된 변수들을 가독성 있게 정의할 수 있다.
- 메서드를 작게 유지하고 한 가지 기능에 집중하라.
- 하나의 메서드가 여러 일을 하면, 다른 기능을 수행하는 코드에서 접근할 수 있게 된다.
- 메서드를 기능 별로 쪼개면 이런 일은 발생하지 않는다.
'Reference > Effective-Java' 카테고리의 다른 글
[Effective-Java] Chapter9 #59. 라이브러리를 익히고 사용하라 (0) | 2023.07.18 |
---|---|
[Effective-Java] Chapter9 #58. 전통적인 for문보다는 for-each 문을 사용하라 (0) | 2023.07.17 |
[Effective-Java] Chapter8 #56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 (0) | 2023.07.15 |
[Effective-Java] Chapter8 #55. 옵셔널 반환은 신중히 하라 (0) | 2023.07.14 |
[Effective-Java] Chapter8 #54. null이 아닌, 빈 컬렉션이나 배열을 반환하라 (0) | 2023.07.13 |