我的导师改变了我的代码,这样的代码审查:我应该把“使用命名空间”内部或外部C++中的命名空间的
using namespace A; // defined in other files
namespace B{
// do something
}
,而不是像这样:
namespace B{
using namespace A;
// do something
}
将命名空间放在命名空间之外是否有任何技术原因?
我的导师改变了我的代码,这样的代码审查:我应该把“使用命名空间”内部或外部C++中的命名空间的
using namespace A; // defined in other files
namespace B{
// do something
}
,而不是像这样:
namespace B{
using namespace A;
// do something
}
将命名空间放在命名空间之外是否有任何技术原因?
在头文件中,您不应在全局范围内有using namespace N;
指令。
它会强制所有客户端代码上的大量标识符N
。
但它可以在命名空间X中使用。请记住,那么using namespace X;
的客户端代码也将从N
获取所有标识符。更保守的方法是在命名空间X
中有一堆using
声明,例如, using N::foo;
。
的替代,当using namespace N;
的原因是N
是一个很长的名字,像Not_short_enough_for_practical_use
,是使用一个命名空间别名–最好是在需要的地方的最小范围:
namespace N = Not_short_enough_for_practical_use;
您的老师的“更正”移动一个using namespace
出的一个名称空间在它之前是负值的。
您应该始终努力(在实际限制内)尽量减少任何事物的范围。
您的问题看起来有点基于意见,取决于贵公司的内部政策。
您可能有一个非常特殊的情况,但这里常见的建议是声明每个标识符尽可能接近它的第一次使用。它将最大限度地减少滚动并使您的代码更易于阅读。它还会将标识符放在最小和最嵌套的命名空间中,从而防止更广泛的名称空间被不必要的标识符淹没。所以如果我是你,我会要求你的导师对他提出的改变给出非常合理的解释。
是的,实际上我已经向他展示了我的样本。非常感谢! –
非常感谢。命名空间别名尤其有用! –