使用C++命名空间时,您更喜欢显式命名它们,如下所示:
std::cout << "Hello, world!\n";
或者您更喜欢using namespace
:
using namespace std; cout << "Hello, world!\n";
如果您更喜欢后者,您是否在文件或功能范围内声明您的使用?
我个人更喜欢明确地命名它们 - 它更多的是打字,但是当使用命名空间的混合(例如std
和boost
)时,我发现它更具可读性.
额外输入不是问题.显式限定名称的问题是视觉混乱.让我们面对现实,C++语法不整洁.不必通过不必要地使名字更长并且用::
s 慷慨地填充代码来使这更糟糕.
我和Jeff Atwood在一起:最好的代码根本就没有代码.这是真的.
命名空间导入是一种减少混乱的好方法,没有任何缺点:只要打开的命名空间的范围减少到单个编译单元1,名称冲突(如果出现)可以轻松解决.
为什么显式名称(一般来说)应该更具可读性对我来说一直是个谜.读者通常应该知道代码足够好以便能够推断出语义.如果不是,则代码需要修复.
1)推论:using
标题中没有!
我总是使用明确的.写std不会伤害我,我清楚地看到它来自哪里.当你有一些遗留项目来处理它自己的"字符串","向量"等维护时,这很有用.代码携带的信息越多越好.
我一直using namespace
用于std和boost.其他所有我倾向于使用显式命名空间,除非它被大量使用以致它会使代码混乱.
在标题中,我从不使用using namespace
以避免污染#including源的全局命名空间.