[이펙티브 자바] 1장 | 들어가기

lychee·2021년 1월 4일
0

Effective Java

목록 보기
2/15
post-thumbnail

🧷 1장 | 들어가기

이 책은 자바 언어와 그 기반 라이브러리, java.lang, java.util, java.io, java.util.concurrent, java.util.function 같은 하위 패키지를 효과적으로 사용하게끔 구성되어 있다.

총 90개의 아이템이 담겨있고, 각 아이템이 하나의 규칙을 다루며, 각 규칙은 업계 최고의 베테랑 프로그래머들이 유익하다고 인정하는 관례다. 이 아이템들이 주제별로 11개 장으로 묶여있고, 각 장은 넓은 관점에서 설계의 한 측면을 다룬다.

💎 기본 원칙

이 책의 규칙 대부분은 아주 핵심적인 기본 원칙 몇 개에서 파생된다.
바로 명료성(clarity)과 단순성(simplicity)이다. 이 두 가지는 무엇보다 중요하다.

  • 컴포넌트는 정해진 동작이나 예측할 수 있는 동작만 수행해야 한다.

  • 컴포넌트는 가능한 한 작되, 그렇다고 너무 작아서는 안 된다.
    (컴포넌트: 개별 메서드부터 여러 패키지로 이뤄진 프레임워크까지 재사용 가능한 모든 SW 요소)

  • 코드는 복사되는 게 아니라 재사용 되어야 한다.

  • 컴포넌트 사이의 의존성은 최소로 유지해야 한다.

  • 오류는 만들어지자마자 가능한 한 빨리 잡아야 한다.

💎 언어 명세

  • 자바가 지원하는 타입 (type: 자료형) = 참조 타입 (인터페이스, 클래스, 배열) + 기본 타입

    • 인터페이스 (interface)
    • 클래스 (class)
    • 배열 (array)
    • 기본 타입 (primitive)

  • 애너테이션 (annotation): 인터페이스의 일종

  • 열거 타입 (enum): 클래스의 일종

  • 클래스의 멤버: 필드 (field), 메서드 (method), 멤버 클래스, 멤버 인터페이스

  • 메서드 시그니처: 메서드 이름 + 입력 매개변수의 타입 (반환 값의 타입은 포함 X)

  • 상속 (inheritance) = 서브클래싱 (subclassing)
    → 클래스가 인터페이스를 구현한다 (implement)
    → 인터페이스가 다른 인터페이스를 확장한다 (extend)

  • API (Application Programming Interface): 프로그래머가 클래스, 인터페이스, 패키지를 통해 접근할 수 있는 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태
    (직렬화: 객체에 저장된 data를 스트림에 쓰기 위해 연속적인 데이터 = 바이트 스트림으로 변환하는 것)

    • 클라이언트: API를 사용하는 클래스(코드)
    • 사용자: API를 사용하는 프로그램 작성자(user)
profile
jeongwon-iee

0개의 댓글