C ++中的多个或单个名称空间名称

Alw*_*ing 3 c++ namespaces naming-conventions

假设我们有一个包含几个策略类的名称空间:

namespace loggingPolicy {
    class OnWrite {...};
    class OnReadWrite {...};
    etc.
} // namespace
Run Code Online (Sandbox Code Playgroud)

这个名字LoggingPolicy::OnWrite很有意义。另一方面,此名称空间实际上是类的集合,而名称loggingPolicies将更好地反映这一点。应该选择哪一个?

尽管我通常不遵循《 Google C ++样式指南》,但确实查找了名称空间的命名约定,但是在此问题上没有任何话要说。

PS:我正在从事一个独立项目,并且不受任何组织准则的约束。但是,我的框架有望被许多人使用,因此好的书写方式很重要。

Chr*_*phe 5

没有任何技术支持或反对这种选择。基本上,这是一个打包选择,例如库名或标头名。

如果您将自己放在用户一边,则存在一些支持单数的一致性参数:

  • 用户将使用您的LoggingPolicy框架。
  • 如果您将其嵌入自己的库中,则用户将使用策略库
  • 如果将所有声明公开在唯一的标头中,则它将为LoggingPolicy.h
  • 如果您使用复数,它将使用户感到困惑,因为他已经使用了std名称空间(即使stds或标准名称空间封装了许多不同的标准区域,也没有使用)。头文件也一样:所有c ++头文件名都采用单数形式(例如,算法,迭代器,字符串都采用单数形式,尽管提供了许多不同的算法,迭代器或字符串。

最后,今天您只公开策略类。但是,如果您还要公开一些常见的帮助器类或实用程序函数,该怎么办?这样,复数将给人一种印象,即这些对象是替代策略,而实际上,它们仅完成了用于该策略的策略。