DRY Macro Trick
Game Development 2008/05/09 18:05 |In English...(show)
C++ 에서 매크로를 이용해 반복 작업을 최소화 하는 경우가 많습니다. 메시지 등록 작업이나 reflection 시스템에 클래스 등록 시 등이 그런 경우이지요. 등록 작업이 코드의 한 부분으로 제한되기 어려운 경우, 어쩔 수 없이 중복되는 정보를 여러 번 입력해야 하는 경우가 있습니다. 그러면 DRY(Don't Repeat Yourself) 원칙에 위반되면서, 여러 불일치 문제가 생길 수 있습니다.
Visual C++ 팀 블로그에서 확인한 다음의 팁이 그러한 경우에 매우 유용하더군요. 다음과 같이 열거형과 그에 대응하는 설명 문자열이 필요한 경우입니다.
enum Animal { dog, cat, fish, bird };
wchar_t* AnimalDiscription[] = { L"dog", L"cat", L"fish", L"bird" };
animal.inc 파일의 내용이 다음고 같다고 하면,MYENUM(dog)
MYENUM(cat)
MYENUM(fish)
MYENUM(bird)
다음처럼 코드를 짜는 겁니다.
enum Animal {
#define MYENUM(e) _##e,
#include "animal.inc"
#undef MYENUM
};
wchar_t* AnimalDescription[] = {
#define MYENUM(e) L"_" L#e,
#include "animal.inc"
#undef MYENUM
};
정말 간단하면서도 절묘한 아이디어인듯...
all2one awakening.png)




이올린에 북마크하기
이올린에 추천하기
댓글을 달아 주세요
윗 글만 봐서 이해가 안됐는데 팀 블로그를 보니 이해가 가더라고요... ㅡ,.ㅡ;;
근데 리플에서도 있듯이 유지보수 차원이나 가독성이 많이 떨어질거 같아요... 좀 더 나이스한 방법이... 제 머리로는... ㅎㅎ
그리고, 가장 중요한 VS.NET IDE에선 저 놈을 F12로 찾아주지 않는다는거... orz...