본문 바로가기
C.C++/코드

에러값 리턴

by 겜게준 2017. 5. 23.

이런짓은 되도록 하지 말자


jwqe764241::error::ERROR__ jwqe764241::registry::openRegistry( _In_ const HKEY hRoot, _In_ const wchar_t *         lpSubKey, _Out_ HKEY& result ) { jwqe764241_ASSERT(hRoot != NULL && lpSubKey != NULL, "Arguments must not be a NULL value"); jwqe764241::error::ERROR__ returnCode = RegOpenKeyEx(hRoot, lpSubKey, NULL, KEY_ALL_ACCESS, &result); if (returnCode == ERROR_SUCCESS) { return ERROR_OK; } return returnCode; }


졸면서 수정을 하다보니 이런 코드가 나오게 되어버렸다.


이런식으로 되어버리면 에러값을 처리하기 위해 함수 정의부에서 한 에러값 체크를 함수 호출부에서 하게 된다.


그러면 불필요한 에러값 체크를 2번을 하게 된다는 말이다. 뭐 간단한 수준에서라지만 일단 불필요한 오버헤드 이므로 수정할 필요가 있다.


물론 리턴값을 내가 원하는 값으로 맵핑을 하려면 저런식으로 할 수 있겠지만, 맵핑을 할 이유도 없을테고 값이 중요한 것이 아니라 그 에러 값이 어떤 에러를 나타내느냐가 중요하기 때문에 맵핑을 할 필요가 없어 보인다. 그러므로 다음과 같이 수정할 수 있겠다.


LSTATUS jwqe764241::registry::openRegistry( _In_ const HKEY hRoot, _In_ const wchar_t *         lpSubKey, _Out_ HKEY* result ) { jwqe764241_ASSERT(hRoot != NULL && lpSubKey != NULL, "Arguments must not be a NULL value"); return RegOpenKeyEx(hRoot, lpSubKey, NULL, KEY_ALL_ACCESS, result); }



아무튼 이런짓은 하지 말자...

'C.C++ > 코드' 카테고리의 다른 글

thread_group  (1) 2018.04.24
asio 타이머 핸들링 예제  (2) 2018.04.17
asio io_service 한방이해  (0) 2018.04.15
예외처리가 안되었을 경우에 terminate 에서 abort 말고 커스텀 함수 호출하는 법  (0) 2017.12.10
assertion  (0) 2017.05.18

댓글