분석이 쉽도록 구조화를 잘 해둘 것
IOCPEvent
class의 MAX_EVENT_COUNT
값을
m_events
배열을 정적으로 선언하고 싶다.… 위와 같은 고민을 하다가, 이 값을 런타임에 변경할 필요가 있는가? 지금 오버하는 건 아닌가? 하고
가장 간단한 상태에서 필요가 생길 때에 수정하는 걸로 결정.
lpCompletionPortEntries
와 같은 변수명의 lp
는 무엇을 의미하는가??
→ long pointer
로서 포인터 변수를 가리키는 접두사다. 헝가리언 표기법으로 나타낸 것이며, 아래 문서로부터 대표적인 예시들과 코딩 규칙을 알 수 있다.
https://learn.microsoft.com/ko-kr/windows/win32/learnwin32/windows-coding-conventions
헝가리언 표기법
변수에 대한 추가 정보를 제공하기 위해 변수 이름에 접두어를 추가하는 방법.
그런데 C++ 가이드라인에서는 이런 접두사 표기법을 권장하지 않는다고 한다.
<aside> 💡
NL.5: Avoid encoding type information in names
If names reflect types rather than functionality, it becomes hard to change the types used to provide that functionality. Also, if the type of a variable is changed, code using it will have to be modified. Minimize unintentional conversions.
이름이 기능보다는 type을 반영하는 경우, 해당 기능을 제공하는 데 사용되는 type을 변경하기가 어려워집니다. 또한, 변수의 type이 변경되면 이를 사용하는 코드를 수정해야 합니다. 의도하지 않은 전환을 최소화하세요.
</aside>
type을 변경해야 하는 상황에서 type을 변경하기 어렵게 만든다는 것이 핵심. 변수명은 여전한데 변수명에 type이 명시돼 있으니 type을 바꾸려 한다면 변수명도 바꿔야해서 변경을 어렵게 한다는 것 같다. → 그럼 내가 작성할 땐 가급적 헝가리안 표기법을 사용하지 않고 작성해보자!
리팩터링 중 멤버가 많은 클래스의 멤버 초기화 코드를 어떻게 해야 할까 고민이 생겼다. 아래 기준을 따라보자.