[Effective Java] Chapter6 열거 타입과 애너테이션

2022. 3. 15. 09:00· BOOK/[이펙티브 자바]
목차
  1. 1. int 상수 대신 열거 타입(enum)을 사용하라
  2. 2. ordinal 메서드 대신 인스턴스 필드를 사용하라
  3. 3. 비트 필드 대신 EnumSet을 사용하라
  4. 4. ordinal 인덱싱 대신 EnumMap을 사용하라
  5. 5. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라
  6. 6. 명명 패턴보다 애너테이션을 사용하라
  7. 7. @Overide 애너테이션을 일관되게 사용하라
  8. ※ 참고

Chapter6 열거 타입과 애너테이션


1. int 상수 대신 열거 타입(enum)을 사용하라

  • 단순히 int 상수를 private staic final로 선언하여 나열하는 것은 가독성이 좋지 않고, 안전하지 않으므로 안전하고, 다수의 기능이 있는 열거타입을 사용해야한다.



2. ordinal 메서드 대신 인스턴스 필드를 사용하라

  • ordinal()을 사용하면 해당 열거 타입이 몇 번째에 위치해 있는지를 알려 주는데, 이러한 방식은 새로운 열거 타입이 생겨 순서가 바뀌면 프로그램의 동작에 오류가 생길 수 있기 때문에 지양해야 한다.
    • 대신 인스턴스 필드를 생성하여 사용하면 된다.



3. 비트 필드 대신 EnumSet을 사용하라

  • 열거할 수 있는 타입을 한데 모아 사용하려면 비트 필드보다는 EnumSet을 사용해야 한다.

    • 비트 필드는 정수 열거 상수의 단점을 그대로 가지며, 모든 원소를 순회하기가 어렵다.
  • public class Text {
      public enum Style { BOLD, ITALIC, UNDERLINE };
      public void applyStyles(Set<Style> styles) { //EnumSet
        //...
      }
    } 



4. ordinal 인덱싱 대신 EnumMap을 사용하라

  • 배열의 인덱스를 얻기 위해 ordinal을 쓰는 것은 일반적으로 좋지 않다.



5. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라

  • 열거 타입이 인터페이스를 구현을 하면 인터페이스의 변경을 통해 열거 타입을 확장할 수 있다.



6. 명명 패턴보다 애너테이션을 사용하라



7. @Overide 애너테이션을 일관되게 사용하라




※ 참고

  • 이펙티브 자바 - 조슈아 블로크
저작자표시 (새창열림)

'BOOK > [이펙티브 자바]' 카테고리의 다른 글

[Effective Java] Chapter8 메서드  (0) 2022.03.22
[Effective Java] Chapter7 람다와 스트림  (0) 2022.03.17
[Effective Java] Chapter5 제네릭  (0) 2022.02.15
[Effective Java] Chapter4 클래스와 인터페이스  (0) 2022.02.10
[Effective Java] Chapter3 모든 객체의 공통 메서드  (0) 2022.02.08
  1. 1. int 상수 대신 열거 타입(enum)을 사용하라
  2. 2. ordinal 메서드 대신 인스턴스 필드를 사용하라
  3. 3. 비트 필드 대신 EnumSet을 사용하라
  4. 4. ordinal 인덱싱 대신 EnumMap을 사용하라
  5. 5. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라
  6. 6. 명명 패턴보다 애너테이션을 사용하라
  7. 7. @Overide 애너테이션을 일관되게 사용하라
  8. ※ 참고
'BOOK/[이펙티브 자바]' 카테고리의 다른 글
  • [Effective Java] Chapter8 메서드
  • [Effective Java] Chapter7 람다와 스트림
  • [Effective Java] Chapter5 제네릭
  • [Effective Java] Chapter4 클래스와 인터페이스
쿠엔크
쿠엔크
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
쿠엔크
기러기는 기록기록
쿠엔크
전체
오늘
어제
  • 분류 전체보기 (132)
    • CS (46)
      • [OS] (12)
      • [NETWORK] (10)
      • [DATABASE] (11)
      • [BASIC CONCEPT] (1)
      • [DATA STRUCTURE] (7)
      • [ALGORITHM] (5)
    • LANGUAGE (17)
      • [JAVA] (17)
    • DESIGN_PATTERN (2)
    • FRAMEWORK (18)
      • [SPRING] (18)
    • ORM (11)
      • JPA (11)
    • AWS (7)
    • BOOK (10)
      • [자바 웹 개발 워크북] (3)
      • [이펙티브 자바] (7)
    • 개발 (19)
      • [오류] (7)
      • [고민] (1)
      • [우테코] (10)
      • [iTracker] (1)
    • Tip (1)
      • [Plugins] (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 운영체제
  • 네트워크
  • 알고리즘
  • 오류
  • 디자인 패턴
  • 개념
  • 데이터베이스
  • 자바 웹 개발 워크북
  • 가비아
  • java
  • Effective Java
  • ArgumentResolver
  • JPA
  • aws
  • Spring
  • HTTP
  • 스프링
  • CORS
  • JVM
  • 자료구조

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
쿠엔크
[Effective Java] Chapter6 열거 타입과 애너테이션

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.