2017-02-24 18 views
1

OpenGL과 C++ (부스트 라이브러리 포함)을 사용하여 나만의 3D 게임 엔진을 만들고 있습니다. 나는 그것이 LOT의 작품이라는 것은 말할 나위도 없다. 로드를 줄이기 위해 동일한 클래스를 처음부터 만드는 대신 내 요구와 거의 일치하는 Boost의 래퍼 클래스를 만들기 시작했습니다. 또한 내 명명 체계는 Boost 및 STL과 매우 다르므로 처음에는 코드베이스 전체에 일관성있는 내용을 유지한다고 느꼈습니다.처음부터 다시 설계하는 대신 래퍼 클래스를 작성하는 C++의 소프트웨어 아키텍처가 좋지 않습니까?

저는이 관행이 나쁜 설계 기법이라고 우려하고 있습니다. 그렇게해도 괜찮습니까? 그렇게 많은 래퍼 클래스를 만드는 것으로부터 예기치 않은 문제가 발생할 수 있습니까?

+1

"예기치 않은 문제가 발생할 수있는 일"은 많지 않습니다. 래퍼 클래스에서 이해할 수없는 원하지 않는 기능을 제대로 숨기고 메모리에 너무 빡빡하지 않으면 미리 만들어진 유형을 래핑하는 것이 좋습니다. – George

+0

그냥 이름을 변경하는 상속 kludge에서 벗어나십시오. 단점은 추상화의 추가 레이어 (올바르게 추상화되면 위쪽으로 변형 될 수 있음)와 래퍼에 버그를 삽입 할 가능성이 있다는 것입니다 (처음부터 모든 것을 작성하는 것과 비교하면 버그가 훨씬 적음). – user4581301

+0

나는 모든 용기, 끈, 물줄기 등을 직접 손으로 쓴다는 생각을별로 좋아하지 않는다. –

답변

2

아니요 대부분의 경우 래퍼를 사용하는 것은 완전히 무해합니다.

일반적으로 컴파일러는 모든 함수 호출을 풀고 소스 라이브러리의 오버 헤드를 최적화해야합니다.

그러나 약간의 문제는 미리 컴파일 된 바이너리를 사용하면 약간의 오버 헤드가 발생할 수 있습니다.

사례에서 래퍼를 사용하려면 (스타일 규칙 유지, 약간의 기능 변경 등) 완전히 정상적으로 연습해야합니다.

추가 : "예상치 못한"물건 중 일부는 별도의 컴파일 시간이 될 수도, 코드 내부의 혼란은 원래의 몇 가지 추가 기능이나 동작은 (U는 ... 지속적으로 그 래퍼를 사용하여 유지할 필요) 또는 래퍼가 지원하지 않는 클래스입니다.

+0

몇 분 후에 수락 할 예정입니다. 나는 방금 upvoted, 기다려야한다. –