c++ - 嵌套命名空间是一种矫枉过正吗?

标签 c++ namespaces

<分区>

我正在编写一个包含大量类的 C++ 程序。在我的脑海中,我可以将它们想象成不同的集合。例如,有一组用于读取和存储配置数据的类,还有另一个用于绘制带有各种小部件的用户界面的集合。

这些集合中的每一个都可以整齐地存储在单独的命名空间中,这似乎是明智的。配置部分有一个“屏幕”类,GUI部分也有一个“屏幕”类,但它们彼此不同。我可以重命名一个“gui_screen”和另一个“config_screen”,但这就是 namespace 的意义所在,不是吗?为了删除这些前缀,我们发明了分隔事物的方法。

然后我的一部分认为将这些 namespace 存储在一个主 namespace 中会很整洁,这样我的代码就不会干扰其他任何 namespace 。我想这也可能使代码更具可读性。

或者我只是无缘无故地制作了过于复杂的数据层次结构?

最佳答案

如果您的 namespace 具有通用名称,例如“gui”和“config”,并且您的代码将来可能成为库的一部分,意在与不受您控制的其他代码链接,它将所有“您的”命名空间嵌套到一个命名空间(除了嵌套的命名空间之外,它可能没有其他内容)可能确实是个好主意,它将它们标识为“您的”。这样做真的没有任何惩罚,特别是如果像您认为的那样可以以有助于提高可读性的方式来完成。 (这与类继承的深层嵌套层次结构截然不同,后者肯定会妨碍清晰度,因为在每一层添加了不同的功能,代码的阅读者或维护者必须在许多文件之间跳来跳去查看或更改添加的内容!-)

关于c++ - 嵌套命名空间是一种矫枉过正吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732376/

相关文章:

c++ - 用于简单记录器的 << 运算符的可变参数模板

xslt - XSL : Ignoring/stripping namespaces in secondary documents

c++ - 为什么我们不能在一个类中声明一个命名空间?

javascript - 使用 JavaScript 命名空间

java - JAXB - 在解码期间检索命名空间映射

c++ - 监控堆使用情况

c++ - 是否有可能在 C++ 中获得类似于 .NET 的 LINQ 的功能?

c++ - 运算符重载 <<

java - 类、静态方法或实例方法 - 编译语言中的内存消耗和可执行文件大小?

c++ - 命名空间内的类和 C++ 外的设置函数