이런짓은 되도록 하지 말자
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 |
댓글