'2008/05'에 해당되는 글 2건

  1. 2008/05/14 Enum tips from "Power of Two Games" (1)
  2. 2008/05/09 DRY Macro Trick (1)

사용자 삽입 이미지

In English...(show)



오랜만에 Power of Two Games 블로그에 들어가보았습니다. 새 글들이  올라왔더군요. 거기서 찾은 유용한 팁입니다.

현재 프로젝트에서  우리는 다음과 같은  명명 규칙으로 C++ 열거형을 표기합니다.

     enum eSomeEnum
    {
        ESE_RED,
        ESE_GREEN,
        ESE_BLUE
    };

이처럼  열거형 타입명의 약어를 접두어로 쓰는  방식은 의외로 접두어가 중복되는 경우도 많고  알아보기도 어렵더군요... 그래서 다음 프로젝트에서는 다른 방법을 쓰리라 생각하던 차에 이 글을 접하게 된 것이죠.

결론은 다음과 같이 쓰자는 것입니다.
namespace GameFlowType
{
enum Enum
{
Invalid,
Run,
Exit,
Restart,
Restore,
};
}

상당히 깔끔한 방식이라 생각합니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
RSS This posting was useful? Then subscribe to "gl3d.net"!
RSS 글이 유익하셨다면 gl3d.net을 구독하세요.

Trackback Address :: http://gl3d.net/trackback/57

  1. Subject: 사진찍는프로그래머의 생각

    Tracked from eslife's me2DAY 2008/05/19 22:32  Delete

    "Enum tips from Power of Two Games enum 을 namespace 와 섞어 사용하면 정말 가독성이 훨씬 나아지고 중복에 대한 부담도 덜 수 있겠네요. 아주 좋은 아이디어 같습니다.

  2. Subject: 사진찍는프로그래머의 생각

    Tracked from eslife's me2DAY 2008/05/19 22:33  Delete

    Enum tips from 'Power of Two Games' enum 을 namespace 와 섞어 사용하면 정말 가독성이 훨씬 나아지고 중복에 대한 부담도 덜 수 있겠네요. 아주 좋은 아이디어 같습니다.

댓글을 달아 주세요

  1. 2008/05/19 11:21 Address Modify/Delete Reply

    비밀댓글 입니다

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

};

 

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

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
RSS This posting was useful? Then subscribe to "gl3d.net"!
RSS 글이 유익하셨다면 gl3d.net을 구독하세요.

Trackback Address :: http://gl3d.net/trackback/56

댓글을 달아 주세요

  1. BlogIcon 차재일 2008/06/04 18:30 Address Modify/Delete Reply

    윗 글만 봐서 이해가 안됐는데 팀 블로그를 보니 이해가 가더라고요... ㅡ,.ㅡ;;

    근데 리플에서도 있듯이 유지보수 차원이나 가독성이 많이 떨어질거 같아요... 좀 더 나이스한 방법이... 제 머리로는... ㅎㅎ

    그리고, 가장 중요한 VS.NET IDE에선 저 놈을 F12로 찾아주지 않는다는거... orz...