我正在開發C++庫,提供與圖像/信號處理和其他內容相關的不同功能。它基本上是一個供開發人員進一步使用的開發庫。我希望它儘可能方便和易於使用。我心裏有3種不同的模式:推薦的C++庫設計
模型1:
包含庫的所有功能的單一大命名空間。例如C++標準庫在namespace std
內實現。或者在namespace cv
內部實現OpenCV。
namespace library
{
//all classes, variables, functions, datatypes are present inside this namespace
}
模型2:
父命名空間,根據功能進一步細分成子名字空間。 e.g .NET框架的父namespace System
包含namespace Collections
,namespace Windows
等等
namespace library
{
//datatypes go here
namespace group1
{
//functions related to group 1
}
namespace group2
{
//functions related to group 2
}
.
.
.
}
模型3:
幾乎一樣的模型2,但包含的功能類,而不是命名空間static
成員。
namespace library
{
//datatypes go here
class group1
{
public:
static function1();
static function2();
}
class group2
{
public:
static function1();
static function2();
}
}
我需要建議這些設計模型哪個最好?還有其他更好的方法嗎? 目前我很喜歡第二款車型。
使用任何有意義的你代碼(看看boost,例如,沒有一個標準,每個庫都根據需要使用嵌套命名空間......)但我要說的一件事是,使用命名空間而不是類來分組函數... – Nim
我個人發現模型2更直觀,並且讓我知道如果我需要在API中找到某些東西,我應該在哪裏看看。 – jviotti