【问题标题】:What are some non-standard ways to use namespaces?有哪些使用命名空间的非标准方式?
【发布时间】:2008-09-25 05:54:02
【问题描述】:

我对使用命名空间的前所未有、酷炫和深奥的方式很感兴趣。我知道许多高级开发人员通过例如将它们用作对字符串常量的引用来“破解”名称空间。在字符串常量示例中,想法是实现 DRY(DRY = Do Not Repeat Yourself),您可以将所有字符串保存在一个文件中。

注意:我正在寻找与“通用”语言相关的答案,例如 C#、Ruby、Java 等。

【问题讨论】:

  • 所以您想成为一名开发人员,在所有事情上都与其他人不同,以尝试变得酷吗?你觉得在圣诞晚宴上穿它有那么难吗?我的建议,不要。你最终只会惹恼你的同事试图寻找代码。
  • 也许不是真正的用途,只是对了解很酷的语言技巧感兴趣。这并没有错,尤其是因为它们通常可以加深您对语言的理解。
  • 我同意 John 的观点,并认为 Rob 是在讽刺。

标签: c# c++ namespaces


【解决方案1】:

我经常使用的一个深奥用途是在 C++ 中定义枚举时,尤其是在某个上下文中有多种类型时。这允许在相关上下文中使用 Quality::k_highImportance::k_high。枚举还经常包含未知值(通常表示未设置任何值的情况),需要限定这些值以消除常量的歧义(例如,k_qualityNonek_importanceNone),而使用命名空间可以避免这种情况。

因此定义如下:

命名空间质量{ 枚举类型 { k_high, k_medium, k_low, k_none }; }

命名空间重要性{ 枚举类型 { k_high, k_medium, k_low, k_none }; }

然后函数和方法将采用Quality::Type(和Importance::Type)类型的参数,这是相当具有描述性和美观的。单个枚举常量的限定也与前面提到的类似 (Quality::k_low)。

【讨论】:

  • 我也使用并喜欢这种技术,因为它有助于自我记录代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
相关资源
最近更新 更多