Q : 어떤 문제를 해결하기 위해 템플릿을 사용하여 만들어 봤지만 마음에 들지 않는다.
어떻게 하는 것이 좋을까?
라는 질문을 해주셨습니다. 작성하신 코드를 보니 뭔가 방법이 틀린것 같은 냄새가 났습니다. 의도는 좋았지만(단위 전략을 사용한 코드의 조합) 단점이 문제를 넘어서는(추가시 알아야할 정보가 너무 많다, 재사용하기 힘들다.) 느낌이랄까.
이분께는 이 문제를 템플릿으로 작성하였을 때 발생할 수 있는 단점을 예로 들어 다른 방안을 찾아보는 것이 어떻겠느냐라고 장황하게 이야기를 하였지만, 결론적으로 제가 드리고 싶은 말은 아래의 단 한줄입니다.
A : 그 문제를 해결하기 위해 템플릿이 필요하면 쓰고, 필요 없으면 쓰지 않으시면 됩니다.
컴파일 타임에 타입 또는 값을 결정할 필요가 있는가? 타입을 제외한 구현부가 중복되는가? 등등. 템플릿의 특성을 따져보아 해당 문제의 솔루션으로 선택될 수 있다면 사용하면 되는 거고, 아니라면 다른 방안을 강구하면 되는 겁니다. 템플릿을 쓰고 안쓰고의 문제가 아닙니다. 해결방안의 선택 문제입니다.
이런 질문을 받으며 떠오르는 생각이, 과연 온라인 게임의 컨텐츠 유지보수 코드상에서 템플릿을 사용할 만한 코드가 있는가 궁금증이 떠올랐습니다.(엔진 라이브러리는 제외한 코드를 이야기합니다.) 신입 프로그래머가 분석하기 어려울 수 있다는 요상한 현실타협형 이유도 있겠지만, 기획에 의해 많은 변경이 가해지는 코드를 컴파일 타임이라는 제약조건에 미리 가두어 버리는 코드를 작성하게 되면 추후 더 곤란의 여지에 빠질 확률이 높아질 것 같은 예감이 들기 때문입니다. 뭐 필요하면 쓰겠지만 아무래도 자제하는 편이 좋지 않을까라는 생각이 듭니다.
덕분에 많은 생각을 해볼 수 있었고 코드를 작성하는 또다른 시각을 볼 수 있었던 유익했던 질문이었습니다.



for my programming life