[Effective Java] 목차와 정리 링크 |
Chapter 1. 개요
Chapter 2. 객체의 생성과 소멸
항목 1. 생성자 대신 static 팩토리(factory) 메소드 사용을 고려하자.
항목 2. 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자.
항목 3. private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자.
항목 4. private 생성자를 사용해서 인스턴스 생성을 못하게 하자.
항목 7. 파이널라이저(finalizer)의 사용을 피하자
Chapter 3. 모든 객체에 공통적인 메소드
항목 8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자.
항목 9. equals 메소드를 오버라이드 할 때는 hashCode 메소드도 항상 같이 오버라이드 하자.
항목 10. toString 메소드는 항상 오버라이드 하자.
항목 11. clone 메소드는 신중하게 오버라이드 하자
항목 12. Comparable 인터페이스의 구현을 고려하자.
Chapter 4. 클래스와 인터페이스
항목 14. public 클래스에서는 public 필드가 아닌 접근자(accessor) 메소드를 사용한다.
항목 16. 가급적 상속(inheritance)보다는 컴포지션(composition)을 사용하자.
항목 17. 상속을 위한 설계와 문서화를 하자. 그렇지 않다면 상속의 사용을 금지시킨다.
항목 19. 타입을 정의할 때만 인터페이스를 사용하자.
항목 20. 태그(tagged) 클래스보다는 클래스 계층을 사용하자.
항목 22. static 멤버 클래스를 많이 사용하자.
Chapter 5. 제네릭 (Generic )
항목 23. 새로 작성하는 코드에서는 원천(raw) 타입을 사용하지 말자
항목 28. 바운드 와일드 카드를 사용해서 API 의 유연성을 높이자.
항목 29. 타입 안전이 보장되는 혼성(heteogeneous) 컨테이너의 사용을 고려하자.
Chapter 6. 열거형(Enum)과 주석(Annotation)
항목 32. 비트(bit) 필드 대신 EnumSet 을 사용하자.
항목 33. 서수 인덱스 대신 EnumMap 을 사용하자.
항목 34. 인터페이스를 사용해서 확장 가능한 enum 을 만들자.
항목 35. 작명 패턴보다는 주석(annotation)을 사용하자.
항목 36. Override 주석을 일관성 있게 사용하자.
Chapter 7. 메소드(method)
항목 41. 오버로딩(overloading)을 분별력 있게 사용하자.
항목 42. 가변 인자(varargs)를 분별력 있게 사용하자.
항목 43. null 대신 비어있는 배열이나 컬렉션을 반환하자.
항목 44. 외부에 제공하는 모든 API 요소에 대해 문서화 주석을 넣자.
Chapter 8. 프로그래밍 일반
항목 46. 종전의 for 루프보다는 for-each 루프를 사용하자.
항목 48. 정확한 계산에는 float 이나 double 타입을 쓰지 말자.
항목 50. 다른 타입을 쓸 수 있는 곳에서는 String 사용을 피하자.
항목 52. 객체 참조는 그 객체의 인터페이스 타입으로 하자.
Chapter 9. 예외 (Exceptions)
항목 58. 복구 가능 상황에서 checked 예외를 사용하고 런타임 예외는 프로그램 에러에 사용하자.
항목 59. checked 예외의 불필요한 사용을 피하자.
항목 62. 메소드가 던지는 모든 예외를 문서화 하자.
항목 63. 실패 상황 정보를 상세 메시지에 포함하자.
Chapter 10. 동시성 (Concurrency)
항목 66. 공유하는 가변 데이터에 접근 시 동기화하자.
항목 68. 스레드 그룹보다는 실행자와 작업을 사용하자.
항목 69. wait 와 notify 대신 동시성 유틸리티를 사용하자.
Chapter 11. 직렬화 (Serialization)
항목 74. Serializable 인터페이스를 분별력 있게 구현하자
항목 76. 방어 가능한 readObject 메소드를 작성하자.
항목 77. 인스턴스 제어에는 readResolve 메소드보다 enum 타입을 사용하자.
항목 78. 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자.
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
Composite Pattern ( 콤포지션 패턴 ) (0) | 2017.06.30 |
---|---|
Visitor Pattern ( 방문자 패턴, visitor 패턴 ) (0) | 2017.06.29 |
[Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. (0) | 2017.03.28 |
[Effective Java] 인스턴스 제어에는 readResolve 메소드보다 enum 타입을 사용하자. (0) | 2017.03.27 |
[Effective Java] 방어 가능한 readObject 메소드를 작성하자 (0) | 2017.03.24 |
댓글