来自c#和java背景,命名空间对我来说并不新鲜,我已经开始喜欢它为代码带来的组织结构。
我最近在c ++上做了更多的工作,并尽量保持我的编码习惯尽可能的现代化。我一直在玩一些沙盒代码,尝试一些新的东西,我想得到一些我一直在玩的东西的反馈。
我所做的是创建一个显式声明一系列结构化命名空间的头文件。我这样做的原因是我想为项目中使用的命名空间布局预定义的结构。我意识到显然命名空间可以在任何类中声明,因为类已定义,但我喜欢命名空间的预定义结构的想法,例如(只是一个例子):
namespace System
{
namespace IO
{
}
namespace Serialization
{
}
namespace Security
{
namespace Cryptography
{
}
}
}
等。你明白了。
我的问题是:这种方法有什么问题吗?我认为这可能是一个很好的做法,因为它遵循良好的封装和命名等编码实践。
我已经看到了老式c ++开发人员对类似事情的一些奇怪的评论,例如:“你正在尝试将Java和c ++结合起来”,或者“命名空间只是一种破坏类型名称以避免命名冲突的方法” 。我完全不同意这些观点,并且不认为那些人完全理解命名空间可以提供的效用。
答案 0 :(得分:0)
我认为它没有任何固有的“错误”:你正在记录命名空间的预期结构。
但是,最终,它也毫无意义,因为没有任何关于此文件的名称会阻止具有相同名称的名称空间在[意外]在不同的结构中创建,从而使您在其中声明的实际类型中具有破坏的层次结构,并且这里的意图层次结构中没有任何内容。
因此,我可能会坚持使用这种东西的独立文档。
答案 1 :(得分:0)
在头文件中声明命名空间层次结构在实践中并不是很有用;包括任何其他文件中的头文件无效。 它接触到我,你试图为那个从事该项目的人创建一个规则,这个规则可能会或可能不会坚持......这都是风格和偏好的问题。
但这种方法没有任何问题。