从本质上讲,C++中的名字空间是对全局作用域的细分。
1、不要在头文件或者#include之前编写名字空间using
1)在头文件中,应该显示地用名字空间限定所有的名字;
2)在源文件中,也应该尽可能的将using声明在局部作用域中。
2、将类型及其非成员函数接口置于同一个名字空间中
公有成员函数和非成员函数都是类的公有接口的组成部分。接口原则是这样描述的:对于一个类X而言,所有在同一个名字空间中“提及”X和“随”X一起提供的函数(包括非成员函数)逻辑上都是X的一部分,因为它们形成了X接口的组成部分。
3、应该将类型和函数分别置于不同的名字空间中,除非有意想让它们一起工作
这是许多莫名其妙的编译错误的原因之一。