저는 이미지/신호 처리 및 다른 것들과 관련된 다양한 기능을 제공하는 C++ 라이브러리를 개발 중입니다. 기본적으로 개발자가 추가로 사용할 수있는 개발 라이브러리입니다. 가능한 한 쉽고 편리하게 사용하고 싶습니다.추천 된 C++ 라이브러리 디자인
모델 1 : 나는 마음에 3 개 가지 모델을 가지고
라이브러리의 모든 기능을 포함하는 하나의 큰 공간. 예 : C++ 표준 라이브러리는 namespace std
안에 구현됩니다. 또는 OpenCV는 namespace cv
안에 구현됩니다.
namespace library
{
//all classes, variables, functions, datatypes are present inside this namespace
}
모델 2 :
부모 네임 스페이스 추가 기능에 따라 하위 네임 스페이스로 구분.
namespace library
{
//datatypes go here
namespace group1
{
//functions related to group 1
}
namespace group2
{
//functions related to group 2
}
.
.
.
}
모델 3 ... namespace Windows
등, 닷넷 프레임 워크의 부모 namespace System
이 namespace Collections
포함 예컨대 : 모델 2와
거의 동일하지만, 클래스 대신 네임 스페이스의 static
구성원으로 포함 된 기능.
namespace library
{
//datatypes go here
class group1
{
public:
static function1();
static function2();
}
class group2
{
public:
static function1();
static function2();
}
}
이러한 디자인 모델 중 어느 것이 가장 좋을까요? 다른 더 좋은 방법이 있습니까? 현재 두 번째 모델에 익숙합니다.
사용을 제안 정확히 등 소켓, 스레드, IPC 통신에 대해 래퍼를 구현하는 내 자신의 라이브러리를 가지고 당신의 코드 (예를 들어 부스트를 봐, 하나의 표준이 없다, 각 라이브러리는 필요에 따라 중첩 된 네임 스페이스를 사용한다.) 한 가지 말하지만, 네임 스페이스 대신 클래스를 사용하여 함수를 그룹화한다. – Nim
개인적으로 모델 2가 더 직관적이며 API에서 무언가를 찾아야 할 때 어디에서 더 빨리 찾을 수 있는지 알려줍니다. – jviotti