Effective Java

jv.bmp 

 

목차
  1. Chapter 1 들어가면서
  2. Chapter 2 객체를 생성하고 파괴하기
    1. 항목 1 : 생성자 대신 스태틱 팩토리 메소드를 고려하라
    2. 항목 2 : private 생성자를 써서 싱글톤을 유지하라
    3. 항목 3 : private 생성자로 인스턴스를 만들지 못하게 하라
    4. 항목 4 : 쓸데없는 객체를 중복 생성하지 마라
    5. 항목 5 : 쓸모 없는 객체 참조는 제거하라
    6. 항목 6 : 종료자들을 쓰지 마라
  3. Chapter 3 모든 객체의 공통 메소드 구현하기
    1. 항목 7 : equals 메소드를 재정의할 때 표준 구현계약을 지켜라
    2. 항목 8 : equals 메소드를 재정의하면 hashCode 메소드도 반드시 재정의하라
    3. 항목 9 : toString 메소드는 항상 재정의하는 것이 좋다
    4. 항목 10 : clone 메소드는 신중하게 재정의하라
    5. 항목 11 : Comparable 인터페이스의 구현을 고려하라
  4. Chapter 4 클래스와 인터페이스
    1. 항목 12 : 클래스와 멤버에 대한 접근은 최소화하라
    2. 항목 13 : 불변 클래스를 써라
    3. 항목 14 : 상속보다 컴포지션을 써라
    4. 항목 15 : 상속받을 수 있도록 설계하고 문서화하라. 아니면 상속을 금지하라
    5. 항목 16 : 추상클래스보다는 인터페이스를 써라
    6. 항목 17 : 인터페이스는 타입을 정의할 때만 써라
    7. 항목 18 : 중첩 클래스는 정적 멤버 클래스로 정의하라
  5. Chapter 5 C 구문 바꾸기
    1. 항목 19 : 구조체는 클래스로 바꿔라
    2. 항목 20 : union은 클래스 계층 구조로 바꿔라
    3. 항목 21 : enum 구문은 클래스로 바꿔라
    4. 항목 22 : 함수 포인터를 클래스와 인터페이스로 바꿔라
  6. Chapter 6 메소드
    1. 항목 23 : 인자의 유효성을 검사하라
    2. 항목 24 : 필요한 경우 방어복사하라
    3. 항목 25 : 메소드 시그니처를 신중하게 설계하라
    4. 항목 26 : 메소드를 중복정의할 때는 신중하라
    5. 항목 27 : 널(null)이 아닌 길이가 0인(zero-length) 배열을 리턴하라
    6. 항목 28 : 외부에 제공하는 API의 모든 구성요소에 대해 문서화 주석을 달아라
  7. Chapter 7 프로그래밍 일반
    1. 항목 29 : 지역 변수의 유효범위를 최소화하라
    2. 항목 30 : 라이브러리를 배우고 익혀서 써라
    3. 항목 31 : 정확한 계산에 float이나 double 타입을 쓰지 마라
    4. 항목 32 : 적절한 타입 대신 문자열을 쓰지 마라
    5. 항목 33 : 성능을 떨어뜨리는 문자열 연결을 조심하라
    6. 항목 34 : 인터페이스 타입으로 객체를 참조하라
    7. 항목 35 : 리플렉션보다 인터페이스를 써라
    8. 항목 36 : 내이티브 메소드는 신중하게 써라
    9. 항목 37 : 신중하게 최적화하라
    10. 항목 38 : 일반 작명규칙을 지켜라
  8. Chapter 8 예외처리
    1. 항목 39 : 예외는 예외상황에서만 써야 한다
    2. 항목 40 : 처리해야 하는 예외와 런타임 예외를 구분해서 던져라
    3. 항목 41 : 처리해야 하는 예외는 꼭 필요할 때만 던져라
    4. 항목 42 : 표준 예외를 써라
    5. 항목 43 : 예외를 적절하게 추상화하라
    6. 항목 44 : 메소드가 던지는 모든 예외를 명세문서에 기술하라
    7. 항목 45 : 실패에 대한 자세한 정보를 상세 메시지 문자열에 담아라
    8. 항목 46 : 실패 원자성을 얻기 위해 노력하라
    9. 항목 47 : 예외를 잡아서 버리지 마라
  9. Chapter 9 스레드
    1. 항목 48 : 변경가능한 공유 데이터에 접근할 때 동기화하라
    2. 항목 49 : 지나친 동기화는 피하라
    3. 항목 50 : wait 메소드는 반복문 안에서만 호출하라
    4. 항목 51 : 스레드 스케줄러에 의존하지 마라
    5. 항목 52 : 스레드 안전성을 문서화하라
    6. 항목 53 : 스레드 그룹을 쓰지 마라
  10. Chapter 10 직렬화
    1. 항목 54 : Serializable 인터페이스는 신중하게 implements하라
    2. 항목 55 : 맞춤 직렬화 형태를 사용하라
    3. 항목 56 : readObject 메소드는 모든 공격을 방어할 수 있도록 작성하라
    4. 항목 57 : 필요하다면 readResolve 메소드를 제공하라

 

 

 

Chapter 1 들어가면서#

 

 

 

Chapter 2 객체를 생성하고 파괴하기#

 

 

항목 1 : 생성자 대신 스태틱 팩토리 메소드를 고려하라#

 

 

항목 2 : private 생성자를 써서 싱글톤을 유지하라#

 

 

항목 3 : private 생성자로 인스턴스를 만들지 못하게 하라#

 

 

항목 4 : 쓸데없는 객체를 중복 생성하지 마라#

 

 

항목 5 : 쓸모 없는 객체 참조는 제거하라#

 

 

항목 6 : 종료자들을 쓰지 마라#

 

 

 

Chapter 3 모든 객체의 공통 메소드 구현하기#

 

 

항목 7 : equals 메소드를 재정의할 때 표준 구현계약을 지켜라#

 

 

항목 8 : equals 메소드를 재정의하면 hashCode 메소드도 반드시 재정의하라#

 

 

항목 9 : toString 메소드는 항상 재정의하는 것이 좋다#

 

 

항목 10 : clone 메소드는 신중하게 재정의하라#

 

 

항목 11 : Comparable 인터페이스의 구현을 고려하라#

 

 

 

Chapter 4 클래스와 인터페이스#

 

 

항목 12 : 클래스와 멤버에 대한 접근은 최소화하라#

 

 

항목 13 : 불변 클래스를 써라#

 

 

항목 14 : 상속보다 컴포지션을 써라#

 

 

항목 15 : 상속받을 수 있도록 설계하고 문서화하라. 아니면 상속을 금지하라#

 

 

항목 16 : 추상클래스보다는 인터페이스를 써라#

 

 

항목 17 : 인터페이스는 타입을 정의할 때만 써라#

 

 

항목 18 : 중첩 클래스는 정적 멤버 클래스로 정의하라#

 

 

 

Chapter 5 C 구문 바꾸기#

 

 

항목 19 : 구조체는 클래스로 바꿔라#

 

 

항목 20 : union은 클래스 계층 구조로 바꿔라#

 

 

항목 21 : enum 구문은 클래스로 바꿔라#

 

 

항목 22 : 함수 포인터를 클래스와 인터페이스로 바꿔라#

 

 

 

Chapter 6 메소드#

 

 

항목 23 : 인자의 유효성을 검사하라#

 

 

항목 24 : 필요한 경우 방어복사하라#

 

 

항목 25 : 메소드 시그니처를 신중하게 설계하라#

 

 

항목 26 : 메소드를 중복정의할 때는 신중하라#

 

 

항목 27 : 널(null)이 아닌 길이가 0인(zero-length) 배열을 리턴하라#

 

 

항목 28 : 외부에 제공하는 API의 모든 구성요소에 대해 문서화 주석을 달아라#

 

 

 

Chapter 7 프로그래밍 일반#

 

 

항목 29 : 지역 변수의 유효범위를 최소화하라#

 

 

항목 30 : 라이브러리를 배우고 익혀서 써라#

 

 

항목 31 : 정확한 계산에 float이나 double 타입을 쓰지 마라#

 

 

항목 32 : 적절한 타입 대신 문자열을 쓰지 마라#

 

 

항목 33 : 성능을 떨어뜨리는 문자열 연결을 조심하라#

 

 

항목 34 : 인터페이스 타입으로 객체를 참조하라#

 

 

항목 35 : 리플렉션보다 인터페이스를 써라#

 

 

항목 36 : 내이티브 메소드는 신중하게 써라#

 

 

항목 37 : 신중하게 최적화하라#

 

 

항목 38 : 일반 작명규칙을 지켜라#

 

 

 

Chapter 8 예외처리#

 

 

항목 39 : 예외는 예외상황에서만 써야 한다#

 

 

항목 40 : 처리해야 하는 예외와 런타임 예외를 구분해서 던져라#

 

 

항목 41 : 처리해야 하는 예외는 꼭 필요할 때만 던져라#

 

 

항목 42 : 표준 예외를 써라#

 

 

항목 43 : 예외를 적절하게 추상화하라#

 

 

항목 44 : 메소드가 던지는 모든 예외를 명세문서에 기술하라#

 

 

항목 45 : 실패에 대한 자세한 정보를 상세 메시지 문자열에 담아라#

 

 

항목 46 : 실패 원자성을 얻기 위해 노력하라#

 

 

항목 47 : 예외를 잡아서 버리지 마라#

 

 

 

Chapter 9 스레드#

 

 

항목 48 : 변경가능한 공유 데이터에 접근할 때 동기화하라#

 

 

항목 49 : 지나친 동기화는 피하라#

 

 

항목 50 : wait 메소드는 반복문 안에서만 호출하라#

 

 

항목 51 : 스레드 스케줄러에 의존하지 마라#

 

 

항목 52 : 스레드 안전성을 문서화하라#

 

 

항목 53 : 스레드 그룹을 쓰지 마라#

 

 

 

Chapter 10 직렬화#

 

 

항목 54 : Serializable 인터페이스는 신중하게 implements하라#

 

 

항목 55 : 맞춤 직렬화 형태를 사용하라#

 

 

항목 56 : readObject 메소드는 모든 공격을 방어할 수 있도록 작성하라#

 

 

항목 57 : 필요하다면 readResolve 메소드를 제공하라#