💡 9장 - 일반적인 프로그래밍 원칙
자바 언어의 핵심 요소에 집중
1. 지역변수, 제어구조, 라이브러리, 데이터 타입
2. 언어 경계를 넘나드는 기능인 리플렉션과 네이티브 메서드
3. 최적화, 명명 규칙
“클래스와 멤버의 접근 권한을 최소화하라[아이템 15]” 의 취지와 비슷하다.
지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다.
자바에서는 지역변수를 “문장을 선언할 수 있는 곳”이면 어디서든 변수를 선언할 수 있다.
지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때까지이다.
그렇기 때문에 실제 사용하는 블록 바깥에 선언된 변수는 그 블록이 끝난 뒤까지 살아 있는다.
⇒ 실수로 의도한 범위 앞 혹은 뒤에서 그 변수를 사용하면 잘못된 결과로 이어질 수 있다.
초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다.
try-catch
는 예외이다.
변수를 초기화하는 표현식에서 검사 예외를 던질 가능성이 있다면 try 블록 안에서 초기화해야 한다. (그렇지 않으면 예외가 블록을 넘어 메서드에까지 전파된다.)
변수값을 try 블록 바깥에서도 사용해야 한다면 정확히 초기화하지 못하더라도 try 블록 앞에서 선언해야 한다.
/*
예시: FileReader는 IOException을 던진다.
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("sample.txt"));
} catch (IOException e) {
System.err.println("에러!! " + e.getMessage());
return;
}
}
}
반복문에서는 반복변수(loop variable)의 범위가 반복문의 몸체, 그리고 for
키워드와 몸체 사이의 괄호 안으로 제한된다. 따라서 반복 변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면, while
문보다는 for
문이 낫다.