1. 핵심적인 기본 원칙
1-1. 명료성(clarity)
- 컴포넌트는 정해진 동작이나 예측할 수 있는 동작만 수행해야 함
1-2. 단순성(simplicity)
- 컴포넌트는 가능한 작되, 그렇다고 너무 작아선 안됨
1-3. 기타 원칙
- 컴포넌트란, 개별 메서드부터 여러 패키지로 이뤄진 복잡한 프레임워크까지 재사용 가능한 모든 소프트웨어 요소를 뜻함
- 코드는 복사되는게 아니라 재사용되어야 함
- 컴포넌트 사이의 의존성은 최소로 유지해야 함
- 오류는 가능한 빨리(되도록 컴파일 타임에) 잡아야 함
2. 자바 언어 명세
2-1. 자바가 지원하는 타입
- interface
- 객체(object)
- annotation은 interface의 일종
- class
- 객체(object)
- field, method, 멤버 class, 멤버 interface
- enum은 class의 일종
- array
- primitive
2-2. API
- 프로그래머가 클래스, 인터페이스, 패키지를 통해 접근할 수 있는 모든 클래스, 인터페이스, 생성자, 멤버 직렬화된 형태(serialized form)를 말함
- API를 사용하는 프로그램 작성자(사람)를 그 API의 사용자(user)라 하며, API를 사용하는 클래스(코드)를 그 API의 클라이언트(client)라 함
- 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태를 총칭해 API 요소라 함