名前の競合を処理するには、コードを名前空間に埋め込む必要があることはわかっています。例えば
My-Header-Only-Library.hpp
namespace AG {
namespace My_Header_Only_Library {
class Foo {
...
};
}
}
だから私は AG::My_Header_Only_Library::Foo を持っています。
はい、私はしばしば 2 つのレベルを使用します - 最初のさまざまな AG、AFG、libAG など - 「私の」もの (私はこれらのライブラリのいくつかを何十年も維持してきましたValid<T>
)。
また、さまざまなモジュールのサブ名前空間をよく使用します。
問題 #1: 名前空間の名前が衝突することがあります。
はい: 名前空間名 AG、AFG、libAG のすべてで衝突が見つかりました。はい、私と同じイニシャルを持つ会社に出くわしたことがあります。
(しばらくの間、私は GLEW を使用していましたが、これはかなりユニークな姓だと思っていました。当時、私はインターネット上で唯一の Glew であり、ARPAnet でイニシャル AG を持つ 48 人目の人物でした (AG48)。しかし、それ以来、OpenGL は、 Extensions Wrangler は、私からそれをほとんど奪ってしまいました。)
「namespace AG_some_random_stuff_675567」の方が衝突しにくいと思います。それは人々がすることですか?長いネームスペース名を使用してから、
using AG_lib = AG_some_random_stuff_675567
または、名前空間の名前を別のものに#定義するなどのトリックを試みたことはありますか?
例えば
#define AG something_more_unique
問題 2: 私は時々、会社に私の図書館を貸与したり、貸与したり、許可したりします。変更を元に戻すこと、つまりフォークしないことを少しお願いします。
それらのコーディング規則は同じではない場合があります。
名前空間の名前を変更してほしくありません。変更を元に戻すのが難しくなるためです。
Q: どうすればいいですか? 彼らにやらせる
using Their_Name = AG_some_random_stuff_675567