使用命名空间的一些非标准方法是什么?

时间:2020-03-06 14:42:19  来源:igfitidea点击:

我对使用命名空间的空前,酷炫和深奥的方式感兴趣。我知道许多高级开发人员通过例如将名称空间用作对字符串常量的引用来"破坏"名称空间。在字符串常量示例中,想法是实现DRY(DRY =不重复自己),我们可以将所有字符串保存在一个文件中。

注意:我正在寻找与"常见"语言(例如C#,Ruby,Java等)相关的答案。

解决方案

我经常求助于一种深奥的用法,就是在C ++中定义枚举时,尤其是当某些上下文中有几种类型时。这样可以在相关的上下文中使用" Quality :: k_high"和" Importance :: k_high"这样的用法。枚举还经常带有未知值(通常表示未设置任何值的情况),这些值必须具有资格以消除常量歧义(例如,k_qualityNone和k_importanceNone),避免使用命名空间。

因此,定义如下所示:

namespace Quality {
   enum Type { k_high, k_medium, k_low, k_none };
}

namespace Importance {
   enum Type { k_high, k_medium, k_low, k_none };
}

然后,函数和方法将使用类型为Quality :: Type(和Importance :: Type)的参数,该参数具有很好的描述性。各个枚举常量的资格也与前面提到的类似(Quality :: k_low`)。