이 책은 자바 언어와 그 기반 라이브러리를 효과적으로 사용하게끔 구성되었다.
기본 원칙
대부분 명료성(clarity), 단순성(simplicity)에 기반
- 컴포넌트는 지정한 (예측 가능한) 동작만 수행
- 컴포넌트는 가능한 한 작되, 너무 작아서도 안됨
- 컴포넌트 간 의존도는 최소화
- 코드는 재사용 O, 복사 X
- 오류는 가능한 한 빨리 잡아야 (웬만하면 컴파일 시)
용어
자료형 | 포함 요소 | 참조타입(reference type) | 객체(Object) |
---|
인터페이스 (interface) | 애너테이션(annotation) | O | O |
클래스(class) | 열거 타입(enum) | O | O |
배열(array) | - | O | O |
기본 타입(primitive) | - | X | X |
자바 명세 | 이펙티브 자바 |
---|
상속(inheritance) | 서브클래싱(subclassing) |
인터페이스의 상속 | 구현(implement), 확장(extend) |
패키지 접근(package access) | 패키지-프라이빗(package-private) |
- 자바에서 명세되지 않은 용어
- 공개 API(exported API), 줄여서 API(application programming interface)
- 프로그래머가 클래스, 인터페이스, 패키지를 통해 접근 가능한 API 요소
- API 작성자가 지원하기로 약속한 API 요소 (ex. 패키지 내 public 클래스, 인터페이스의 public 혹은 protected 멤버와 생성자)
- (자바 9) '해당 라이브러리의 모듈 선언(module declaration)에서 공개하겠다고 한' 패키지들의 공개 API (모듈시스템 개념 - 공개 패키지 선택 가능)
- 관련 용어
- 사용자(user): API에 접근하는 '사람'
- 클라이언트(client): API를 사용하는 '클래스(코드)'
- API 요소: 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태
Reference
조슈아 블로크Joshua Bloch, 『이펙티브 자바 Effective Java 3/E』, 개앞맵시(이복연) 옮김, 인사이트(2018), p1-5.