반응형
[Effective Java] ordinal 대신 인스턴스 필드를 사용하자. |
-
모든 enum 은 ordinal 메소드를 갖고 있으며, 이 메소드는 enum 타입에 있는 각 enum 상수의 위치를 서수(첫번째, 두번째와 같이 순서의 의미를 가진 수)로 반환한다.
이 ordinal 메소드는 enum 의 순서에 절대 변화가 없다면 사용할 수 있지만, 유지보수가 있을 시에는 문제가 된다.
상수 값의 순서가 바뀌면 바로 값이 바뀌어 기존 int 상수를 사용하는 것과 별반 다를 바 없어진다.
아니 오히려 더 유지보수가 어려워질 수 있다.
-
만일 int 값이 필요하다면 ordinal 을 사용하지 않고, 생성자에 번호를 넣는 방법으로 따로 variable 을 지정해서 사용하는 것이 좋다.
-
ordinal 은 EnumSet 이나 EnumMap 과 같은 범용 enum 데이터 구조에서 사용하기 위해 설계된 것이다.
그런 데이터 구조를 만들지 않는다면 ordinal 은 아예 사용하지 않는 것이 가장 좋다.
반응형
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
[Effective Java] ordinal 인덱스 대신 EnumMap 을 사용하자. (0) | 2016.12.27 |
---|---|
[Effective Java] 비트(bit) 필드 대신 EnumSet 을 사용하자. (0) | 2016.12.26 |
[Effective Java] int 상수 대신 enum 을 사용하자. (0) | 2016.12.19 |
[Effective Java] 바운드 와일드 카드를 사용해서 API 의 유연성을 높이자. (0) | 2016.12.05 |
[Effective Java] 제네릭 메소드를 애용하자. (0) | 2016.12.01 |
댓글