본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[Effective Java] ordinal 대신 인스턴스 필드를 사용하자.

by 돼지왕 왕돼지 2016. 12. 20.
반응형


 [Effective Java] ordinal 대신 인스턴스 필드를 사용하자.


Effective JAVA, enum, enum 데이터 구조, enummap, enumset, iNT, int 상수, Java, ordinal, variable, [Effective Java] ordinal 대신 인스턴스 필드를 사용하자., 번호, 상수, 상수 위치, 생성자, 서수, 순서, 유지보수, 인스턴스 필드

-
모든 enum 은 ordinal 메소드를 갖고 있으며, 이 메소드는 enum 타입에 있는 각 enum 상수의 위치를 서수(첫번째, 두번째와 같이 순서의 의미를 가진 수)로 반환한다.
이 ordinal 메소드는 enum 의 순서에 절대 변화가 없다면 사용할 수 있지만, 유지보수가 있을 시에는 문제가 된다.
상수 값의 순서가 바뀌면 바로 값이 바뀌어 기존 int 상수를 사용하는 것과 별반 다를 바 없어진다.
아니 오히려 더 유지보수가 어려워질 수 있다.


-
만일 int 값이 필요하다면 ordinal 을 사용하지 않고, 생성자에 번호를 넣는 방법으로 따로 variable 을 지정해서 사용하는 것이 좋다.


-
ordinal 은 EnumSet 이나 EnumMap 과 같은 범용 enum 데이터 구조에서 사용하기 위해 설계된 것이다.
그런 데이터 구조를 만들지 않는다면 ordinal 은 아예 사용하지 않는 것이 가장 좋다.





반응형

댓글