2013-04-23 51 views
2

是否使用命名空间以及文件夹来组织代码矫枉过正?是否使用命名空间以及文件夹来组织代码矫枉过正?

例子:

Folder Structure: 
Engine (Root) 
--Audio 
--Exceptions 
--Game 
--GFX 
--Input 
--Math 
--Messages 
--Physics 
--Time 
--[global headers] 

所有的类都包含在一个命名空间[root]::防止碰撞与std::和第三方代码。 Math文件夹包含[root]::Math::名称空间中包含的一些帮助程序(免费)函数的头文件,并且在[root]::AudioHandler::名称空间中Audio具有一些更多的帮助程序(免费)函数。

我应该将每个文件夹中的类放入类似描述的命名空间吗? (即Physics文件夹中的类也将位于[root]::Physics::名称空间中。)

+0

是的,它是过度的。你会厌倦写非常快的命名空间。想象一下,每次写入'root :: Math :: vector3f'。 – yngccc 2013-04-23 03:21:13

+0

作为记录,visual studio c#将其作为其标准功能的一部分。有时很烦人,当我想要解决方案文件夹,但没有名称空间的变化。 – 2013-04-23 03:23:39

+0

@yngum这就是'使用名称空间'和名称空间别名派上用场的地方 - 如果明智地使用。 – 2013-04-23 03:25:07

回答

2

命名空间组织逻辑接口,目录为“物理”文件。

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

std::是一个非常稳定和协调良好的命名空间的明显例子,这意味着很多东西都可以成功绑定到它。如果您正在开发一个单人项目 - 从图书馆到应用程序的所有工作 - 您更有可能应对更少的命名空间。

另一方面,如果您有多个独立工作的全局团队 - 不断更改/添加标识符 - 那么最好将代码分离到命名空间中。此外,如果您有经验,那么在另一个系统中使用的显而易见且理想的标识符已经在另一个系统中使用 - 这也暗示了命名空间。

相关问题