C++ 是否使用名称空间和文件夹来组织代码过度使用?

C++ 是否使用名称空间和文件夹来组织代码过度使用?,c++,namespaces,C++,Namespaces,使用名称空间和文件夹来组织代码是否过度 例如: Folder Structure: Engine (Root) --Audio --Exceptions --Game --GFX --Input --Math --Messages --Physics --Time --[global headers] 所有类都包含在[root]::命名空间中,以防止与std::和第三方代码发生冲突。Math文件夹包含[root]::Math:命名空间中包含的一些帮助程序(免费)函数的标题,Audio在[roo

使用名称空间和文件夹来组织代码是否过度

例如:

Folder Structure:
Engine (Root)
--Audio
--Exceptions
--Game
--GFX
--Input
--Math
--Messages
--Physics
--Time
--[global headers]
所有类都包含在
[root]::
命名空间中,以防止与
std::
和第三方代码发生冲突。Math文件夹包含
[root]::Math:
命名空间中包含的一些帮助程序(免费)函数的标题,Audio在
[root]::AudioHandler::
命名空间中还有一些帮助程序(免费)函数


我是否应该将每个文件夹中的类放入一个类似描述的命名空间中?(即,物理文件夹中的类也将位于
[root]::physical::
名称空间中。)

名称空间组织逻辑接口、目录和“物理”文件

单个名称空间中的代码越多,其相对稳定和协调性就越重要;如果标识符不稳定且不协调,则在合并更改时可能会出现冲突。根据您对此类冲突的体验或感受,您可以选择名称空间

std::
是一个非常稳定且协调良好的名称空间的明显例子,这意味着许多东西可以成功地捆绑到其中。如果您正在处理一个人的项目—从库到应用程序—您很可能也要处理更少的名称空间


另一方面,如果有多个全局团队独立工作—不断更改/添加标识符—那么最好将代码划分为名称空间。此外,如果您有在一个系统中使用的明显且理想的标识符已经在另一个系统中使用的常规经验,那么这也意味着名称空间。

是的,它被过度使用了。您将对快速编写名称空间感到厌倦。想象一下,每次编写
root::Math::vector3f
,visual studio c#将此作为其标准功能的一部分。有时,当我想要解决方案文件夹而不是名称空间更改时,这很烦人。@yngum这就是
使用名称空间
和名称空间别名方便的地方-如果使用得当的话。@Captain Obvlious我的个人经验是
使用名称空间
使代码更难阅读,因为你必须猜测函数的名称空间是什么,更不用说函数冲突的时间了。