画像/信号処理などに関連するさまざまな機能を提供する C++ ライブラリを開発中です。基本的に、開発者がさらに使用するための開発ライブラリです。できるだけ便利で使いやすいものにしたい。私は3つの異なるモデルを念頭に置いています:
モデル 1:
ライブラリのすべての機能を含む単一の大きな名前空間。たとえば、C++ 標準ライブラリは 内に実装されていnamespace std
ます。または OpenCV は 内に実装されていnamespace cv
ます。
namespace library
{
//all classes, variables, functions, datatypes are present inside this namespace
}
モデル 2:
機能に応じて、子の名前空間にさらに分割された親の名前空間。たとえば、.NET Framework の親には、など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();
}
}
これらの設計モデルのどれが最適かについての推奨事項が必要ですか? 他のより良いアプローチはありますか?現在、私は2番目のモデルに満足しています。