[Effective Java 3/E] 1장. 들어가기

이나영·2022년 6월 22일
0

effective java

목록 보기
1/1

Java 언어를 더 잘 이해하고 Java 언어 기반의 프레임워크를 더 잘 활용하기 위해 Effective Java 3rd Edition 책을 읽고 모든 내용을 차근히 정리해보려고 한다.

1장. 들어가기

java.lang, java.util, java.io, java.util.concurrent, java.util.funtion 같은 하위 패키지를 효과적으로 사용할 수 있게 한다.


기능자바 버전
람다자바 8
스트림자바 8
옵셔널자바 8
인터페이스의 디폴트 메서드자바 8
try-with-resources자바 7
@SafeVarargs자바 7
모듈자바 9

🚧 책을 읽으면서 주의해야할 핵심적인 기본 원칙

  • 명료성(clarity)
  • 단순성(simplicity)
  1. 컴포넌트는 사용자를 놀라게 하는 동작을 해서는 안된다.
    => 정해진 동작이나 예측할 수 있는 동작만 수행해야 한다.
  2. 컴포넌트는 가능한 작게, 그렇다고 너무 작게는 말고.
    => 이 책에서 컴포넌트란, 개별 메서드부터 여러 패키지로 이루어진 복잡한 프레임워크까지 재사용 가능한 모든 소프트웨어 요소이다.
  3. 코드는 복사되는 것이 아니라 재사용되어야 한다.
  4. 컴포넌트 사이의 의존성은 최소로 유지해야 한다.
  5. 오류는 생성되자마자 가능한 빨리(되도록 컴파일타임에) 잡아야 한다.

이 규칙들을 최대한 지키면서, 어겨야 할 때는 합당한 이유가 있도록 한다.


이 책에서 나는 성능 향상에 대한 기술보다 프로그램을 좀 더 명확하고, 정확하고, 유용하고, 견고하고, 유연하고, 관리하기 쉽게 짤 수 있도록 학습한다.

성능 향상은 그 이후에.


type 종류자바가 지원하는 타입(type; 자료형)객체(object) 여부
참조타입(reference type)인터페이스(interface)
클래스(class)
배열(array)
O
기본타입(primitive type)X

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

멤버 시그니처는 메서드 이름과 입력 매개변수(parameter)의 타입들로 이루어진다.


🚨 기억할 것

  • 이 책에서는 상속(inheritance)\와 서브클래싱(subclassing)은 동의어이다.
    => 인터페이스 상속 대신 클래스가 인터페이스를 구현한다.(implement) 혹은 인터페이스가 다른 인터페이스를 확장한다.(extend)라고 표현한다.

  • 공개 API(= API)는 프로그래머가 클래스, 인터페이스, 패키지를 통해 접근할 수 있는 모든 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태(serialized form)을 말한다.

    • 사용자(user) : API를 사용하는 프로그램 작성자(사람)
    • 클라이언트(client) : API를 사용하는 클래스(코드)
    • API 요소 : 클래스, 인터페이스, 생성자, 멤버, 직렬화된 형태를 총칭하는 것
    • 공개 API는 그 API를 정의한 패키지의 밖에서 접근할 수 있는 API요소로 이루어진다.
      => 즉, 모든 클라이언트가 접근 가능하고, API 작성자가 지원하기로 약속한 것
      => 자바 9 버전에서는 모듈 시스템이라는 개념이 추가되었는데, 공개할 패키지를 선택할 수 있게된다.
profile
소통하는 백엔드 개발자로 성장하기

0개의 댓글