DRY Macro Trick

사용자 삽입 이미지

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

};

 

정말 간단하면서도 절묘한 아이디어인듯...

크리에이티브 커먼즈 라이선스
Creative Commons License

'Game Development' 카테고리의 다른 글

Useful tips about 'stand-up meeting(Daily Scrum)'  (0) 2008/06/26
Enum tips from "Power of Two Games"  (1) 2008/05/14
DRY Macro Trick  (1) 2008/05/09
Win32 File Name Iteration Boost Way  (0) 2008/03/26
Software Transactional Memory  (0) 2008/03/26
GDC 마지막 날  (0) 2008/02/23
Trackback 0 Comment 1

top