我的库使用了几个嵌套的命名空间,布局如下:
Library name
Class name 1
Class name 2
Class name 3
[...]
Utilities
Class name 1
[...]
Class name 2
[...]
Class name 3
[...]
[...]
“实用程序”命名空间包含对每个类的有用扩展,这些扩展不保证包含在实际类本身中。
“库名称”命名空间是必要的,因为它避免了与其他库的广泛冲突,“实用程序”命名空间是必要的,以避免由此类事物引起的歧义类型,并且其中的“类名”命名空间避免名称之间的冲突为类似类编写的实用程序。
尽管如此,这在实践中仍然是一个巨大的麻烦。以以下为例:
MyLibrary::MyContainer<int> Numbers = MyLibrary::Utilities::MyContainer::Insert(OtherContainer, 123, 456);
// Oh God, my eyes...
这让我觉得我做错了什么。有没有更简单的方法来让事情变得井井有条、直观且明确?