• 명료성과 단순성이 무엇보다 중요하다.
  • 컴포넌트는 정해진 동작이나 예측할 수 있는 동작만 수행해야 한다.
  • 컴포넌트는 가능한 한 작되, 그렇다고 너무 작아서는 안 된다.
  • 코드는 복사되는 게 아니라 재사용되어야 한다.
  • 컴포넌트 사이의 의존성은 최소로 유지해야 한다.
  • 오류는 만들어지자마자 가능한 한 빨리 (되도록 컴파일 타임에) 잡아야 한다.

  • 프로그래밍 고수 경지에 오르려면 먼저 정석이 되는 규칙들을 배운 후, 언제 그 규칙을 깨도 되느냐를 익혀야 한다.

자바 타입 4가지

  • 인터페이스 (참조 타입)
  • 클래스 (참조 타입)
  • 배열 (참조 타입)
  • 기본타입(primitive)
    • 클래스의 인스턴스와 배열은 객체인 반면 기본 타입은 그렇지 않다.

애너테이션

  • 인터페이스의 일종

열거 타입(enum)

  • 클래스의 일종

클래스 멤버

  • 필드
    • 객체 데이터 저장되는 곳
  • 메서드
  • 멤버 클래스
  • 멤버 인터페이스

메서드 시그니처

  • 메서드 이름
  • 입력 매개변수 타입들
  • 반환값 타입은 시그니처에 포함되지 않는다.

인터페이스 상속 대신

  • 클래스가 인터페이스를 구현한다.
  • 인터페이스가 다른 인터페이스를 확장한다.

API

  • 사용자: API를 사용하는 프로그램 작성자
  • 클라이언트: API를 사용하는 클래스(코드)
  • API 요소: 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태

Source