Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Pure Software Engineer :)

[C++] bool vs. enum 본문

Software Engineering/Programming

[C++] bool vs. enum

HelloJaewon 2014. 8. 11. 11:25

코드를 작성하다보면 bool 타입을 써야할 때가 종종 있다.

1바이트를 사용하고, 그 변수의 이름과 맞물려서 true/false를 잘 표현해낸다면 딱일 것이다.

 

최근 코드를 보다가 아래와 같은 코드를 본적이 있다.

 

1
2
3
4
5
//===========================================================================
void CStsRouteConn::OnRouteRegisterFinished (bool result) {
...
...
}

 

(주관적일지 모르겠지만)저기서 result를 사용하는것은 좋은 코드같아 보이지는 않는다.

함수 이름으로 봤을때 뭔가 하는 작업이 끝났을때 callback되는것 같고,

result는 작업이 성공했는지, 실패했는지를 나타내는것 같다.

위의 경우에는 변수명을 적절히 바꿔야만 할것같다.

 

아래 코드를 보자.

 

 
1
2
//===========================================================================
bool CheckApiRight (bool isHttp);

 

CheckApiRight라는 함수는 isHttp가 true/false에 따라 뭔가 처리를 하고 결과를 bool 값을 반환하는 듯 하다.

코드 구현부를 보면 http/sts 프로토콜에 따라 나눠서 처리를 하도록 되어 있었다.

그래서 isHttp말고도 다른 입장에서는 isSts 라는 변수명을 쓸수도 있었을테다.

 

어쩃든, 위의 경우에는 차라리 enum을 쓰는게 어떨까 싶다.

1
2
3
4
5
6
7
8
9
//===========================================================================
enum ERequestType {
    REQUEST_TYPE_STS,
    REQUEST_TYPE_HTTP,
    REQUEST_TYPES
};
 
//===========================================================================
bool CheckApiRight (ERequestType type);

 

저렇게 되어 있다면, 좀 더 명시적으로 type에는 어떤것들이 있는지 알고 사용할 수 있을듯 하다.

 

bool 대신 enum을 사용하면서 메모리는 더 사용하게 됐을지 몰라도(enum이 4바이트였나?)

코드의 가독성을 높일 수 있다고 생각한다.