ネストされた名前空間を使用すると、完全修飾名が非常に長くなることがあります。タイピングの量を減らすために使用できることはわかっていnamespace abc = aaa::bbb::ccc
ます (場合によっては読みやすさも向上する可能性があります)。
ただし、プロジェクト内のすべてのファイルでこの名前変更を実現する最善の方法は何なのかはわかりません。単純なアプローチ (つまり、使用ごとに長い名前空間の名前を変更する) は、異なるファイルで同じ完全修飾名に異なる短い名前を使用することになる可能性があります。そのため、これを行うためのより一貫した方法を考え出すことを考えていました。
たとえば、次のようなものとします。
project
|- client
| |- core
| |- plugin
| |- util
|- server
...
削減された名前を含め、ディレクトリごとに 1 つのヘッダーを作成することを考えていました。たとえば、project/client/core/core.h
含まれますnamespace pr_cl_core = project::client::core
(この短い名前の例はかなり貧弱ですが、実際のプロジェクトではもっと理にかなっています)。次に、core.h
すべてのヘッダー ファイルに をインクルードしてproject/client/core
、そのディレクトリのヘッダーがたとえば にインクルードされたときに、project/client/plugin/plugin_foo.h
名前空間の短いバージョンをすぐに利用できるようにします。
これはそうするための良いアプローチですか?他に良い方法はありますか?
SO の C++ 名前空間 (たとえば、1および2 ) に関するいくつかの質問を見つけましたが、プロジェクト全体の方法で名前空間の名前変更を解決する方法に関連するものはありません。
編集:さらに、このようなメカニズムを使用して、プロジェクト全体の長い名前空間 (Boost のものなど) の名前を体系的に変更できます。たとえば、私は通常、次のような名前空間の名前を変更します。
namespace ip = boost::asio::ip;
namespace ptime = boost::posix_time;
現在、これは翻訳単位ごとに行っていますが、プロジェクト全体に対してグローバルなアプローチを使用して行いたいと考えています。