自从本科第一次学习语言开始,教科书上基本上都教导的是直接使用using namespace 导入命令空间,从而导致目前许多未正式参与过大型项目的程序员,在使用C++的过程中养成了普遍性最常见的程序员编程错误,那就是一开始写代码,前几句就写上了using namespace std;之类的语句,甚至在各种头文件中也这样使用。这样的方式确实可以不用繁琐的添加std等各种标准库名,然而今天通过书籍才发现这样随意的使用命名空间却容易在某些时候产生一些难易发现的错误。比如在大型项目中,当某个同事编写了一个自定义类型与某个已有命名重复时可能就会产生错误。
故该书籍推荐尽量不要在全局作用域中使用using,若你依然想避免繁琐的使用各种标准库名,则可以使用以下推荐的方式:
1.尽量将需要使用的名空间引入在局部作用域中,例如某个需要的头文件函数中,
void fun(){
using namespace std;
//……
}
2.为需要使用的冗长的命令空间定义别名
std::map<std::string, long> client;
typedef std::map<std::string, long> ClientName;
ClientName client;
//或者使用
namespace s=std:map;