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