Standardではない邪道なC++ライブラリの開発日誌
ライブラリを開発するにあたり、最初に決めておかなければならないことがかなりあります。名前空間もそのひとつです。もっとも、決めておかなければならないことは確かですが、これについてはほとんど選択肢はありません。ライブラリ名を取って、dradnatsとするのが妥当でしょう。
他に、特定のプラットフォームに依存するライブラリ要素を格納するための名前空間も決めておくことにします。これも安直に、Windowsに依存する部分はdradnats::windows、POSIXに依存する部分はdradnats::posixとすることにします。他のプラットフォーム依存のものが出てくるなら、同様に名前空間を設定することにします。
また、特定のライブラリに依存する部分の名前空間ですが、これは基本的にはdradnatsの中に入れてしまおうと考えています。例えば、Boost C++ Librariesに依存する部分であっても、dradnats::boostとはせずに、単にdradnatsとすることにします。もっと特殊なライブラリやフレームワークに依存する場合は、その都度考えることにします。
最後に、ライブラリが内部的に使用する名前空間についても決めておく方がよいでしょう。実装の詳細部分を格納するための名前空間を分離しておくことで、クライアントコードで使用するdradnatsのような名前空間を汚染せずに済みます。これは、Boost C++ Librariesに倣ってdetailとすることにします。例えば、dradnats::detailとか、dradnats::windows::detailのようにします。
これで名前空間については一通り決まりました。
また、特定のライブラリに依存する部分の名前空間ですが、これは基本的にはdradnatsの中に入れてしまおうと考えています。例えば、Boost C++ Librariesに依存する部分であっても、dradnats::boostとはせずに、単にdradnatsとすることにします。もっと特殊なライブラリやフレームワークに依存する場合は、その都度考えることにします。
最後に、ライブラリが内部的に使用する名前空間についても決めておく方がよいでしょう。実装の詳細部分を格納するための名前空間を分離しておくことで、クライアントコードで使用するdradnatsのような名前空間を汚染せずに済みます。これは、Boost C++ Librariesに倣ってdetailとすることにします。例えば、dradnats::detailとか、dradnats::windows::detailのようにします。
これで名前空間については一通り決まりました。
この記事にコメントする