Code Complete 2E 를 보고 있다. 작년에 빠른 속도로 보다가 몇개월 동안 거의 안봤다.
다시 보고 있는 중에, enumerated type 에 관한 팁이 있다.
enum MY_COLOR {
COLOR_INVALID = 0,
COLOR_FIRST = 1,
COLOR_RED = 1,
COLOR_GREED = 2,
// ..
COLOR_DDONG = 12,
COLOR_LAST = 12
};
거기서 말하는 것 팁은 다음과 같다.
- 0 번을 invalid 로 하기
- first 와 last 를 만들고, 특히 loop 같은 곳에서 사용하기
하지만 개인적으로는 LAST 보다 COUNT 를 넣는 것이 나은 것 같다. 즉,
COLOR_DDONG = 12,
COLOR_LAST = 12
대신
COLOR_DDONG = 12,
COLOR_COUNT = 13 // (혹은 NUMBER_OF_COLORS = 13)
를 사용하는 것이 더 좋은 것 같다. 이렇게 히면
for( int i = COLOR_FIRST; i <= COLOR_LAST; i++ )
// [i]
대신, 다음과 같이 사용할 수 있다.
for( int i = COLOR_FIRST; i < COLOR_COUNT; i++ )
// [i]
물론 동적 할당 등에도 큰 도움이 된다.
COLOR *Colors = new COLOR[COLOR_COUNT];
약간 의미상으로 문제가 되는 것은, COLOR 의 COUNT 인데, 이것은 순수 valid color 만을 포함하지 있지 않고, invalid color (0 번 color) 까지 포함하게 된다.
하지만, 혹시 COLOR_INVALID 를 사용하지 않는다면, 일단 COLOR_LAST 보다는 COLOR_COUNT 를 사용하는 것이 좋아보이고, invalid 를 사용한다 하더라도, 그렇게 의미적으로 큰 문제가 있는 것 같지는 않다. (오히려 invalid 를 COUNT 에 꼭 넣어야 하는 경우도 있기 때문이다.)
아무튼, COUNT 던, LAST 던 이런거 하나 넣으면 매우 요긴하게 쓸 수가 있다.







553937
307
432





댓글을 달아 주세요