c++中名称空间的复数或单数
Plural or singular namespace names in C++
假设我们有一个包含多个策略类的名称空间:
namespace loggingPolicy {
class OnWrite {...};
class OnReadWrite {...};
etc.
} // namespace
名称LoggingPolicy::OnWrite
是有意义的。另一方面,这个名称空间实际上是类的集合,名称loggingPolicies
将更好地反映这一点。应该选择哪一个?
虽然我一般不遵循Google c++风格指南,但我确实查找了其命名空间的命名约定,但它没有任何关于这个问题的说明。
注:我正在做一个独立的项目,不受任何组织的指导方针的约束。然而,我的框架希望被很多人使用,所以好的符号风格很重要。
对于这种选择没有技术上的支持或反对。基本上,这是一个打包选择,就像库名或标题名一样。
如果你站在用户的立场上,有一些一致性的论点支持单数:
- 用户将使用您的logingpolicy框架。
- 如果你将它嵌入到自己的库中,用户将使用Policy库
- 如果你要在一个唯一的头文件中公开你的所有声明,它将是LoggingPolicy.h
- 如果使用复数形式,则会使用户感到困惑,因为他已经使用了std名称空间(而不是std或standards名称空间,即使它封装了许多不同的标准领域)。头文件也是如此:所有c++头文件名称都是单数形式(例如algorithm, iterator, string),尽管提供了许多不同的算法、迭代器或字符串,但它们都是单数形式。
最后,今天您只公开策略类。但是,如果还公开一些常见的helper类或实用程序函数呢?复数形式给人的印象是这些对象是可选策略,而实际上它们只完成了它所用于的策略。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- OpenGL相机和相机空间转型的困惑
- CUDA内核和数学函数的显式命名空间
- 打印第二列时的2d字符矢量打印空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 为什么 openmp 的并行不适用于矢量化色彩空间转换?
- 是否可以将函数导入命名空间,但不能导出它?
- c++中名称空间的复数或单数