.NET 관련한 것들은 전부 날림으로 봐서 프로그램 작성은 가능한데 아는건 또 별로 없는 그런 상태다. 회사에서 쓸 툴이라도 만들게 되면 좀 더 심도있게 파보겠지만, 지금까지 품질에 의미를 둘만한 것은 없었고 단순 구현이나 테스트 정도였다. 그래서 가끔 책을 보면 항상 새로운 것을 알게 되고 "오 이런것도 되네(있네)"라는 생각을 하면서도, 좀 생각해보면 왜 그렇게 설계(혹은 구현)을 했는지 짐작이 될때가 많다.
그런데 이번에 알게 된 내용은 왜 이렇게 만들었는지 도저히 이해할 수 없다. 다음 코드는 C++/CLI 코드로 C++에 없는 키워드가 좀 있지만 C++을 알고 있다면 이해 못할만한 부분은 없으리라 생각된다.
일단 위의 코드는 Derived를 출력한다. Explicit(Named) Virtual Overriding 이라는게 자식 클래스에서 구현해야 할 가상 함수의 이름을 지정해 줄 수 있다는 건데, 혼란만 주게 될 이런 선택을 왜 했는지 모르겠다. 위의 코드는 간단해서 Shout()와 Chant()의 관계를 쉽게 유추할 수 있지만 코드 규모가 한두명이 감당하기 어려울 정도로 커진다면 복잡도만 높이게 될 것 같다. 나중에 혹 C++/CLI로 프로젝트를 진행하면 이 기능(Named Virtual Overriding)은 절대 못쓰게 해야겠다.
