15.4 对名称空间的思考

    下面引用了当前流行的名称空间使用指导原则。

    ❑使用在已命名的名称空间中声明的变量,而不是使用外部全局变量。

    ❑使用已命名的名称空间中声明的变量,而不是静态全局变量。

    ❑如果开发了一个函数库或者类库,将其放在一个名称空间中。事实上C++提倡将标准函数库放在名称空间std中。

    ❑仅将编译指令using作为一种将旧代码转换为名称空间的权宜之计。

    ❑对于using声明,首先将其作用域设置为局部而不是全局。

    ❑首先,不要在头文件中使用using编译指令,这样会使得可用名称变得模糊,容易出现二义性;其次,包含头文件的顺序可能会影响程序的行为,如果非要使用using编译指令,建议放在所有#include预编译指令之后。

    名称空间相当于是在原有名称层次的基础上又扩展了一层,而且是最外面的一层,原始的名称层次进化规则简单归纳为如图15.1所示。

    图15.1中并列、代码块和类是3种组织名称实体的方式,相互包含和嵌套,在这3种方式无法满足大型软件项目管理的时候,名称空间被提出,相当于在原有基础上新增一维,给名称实体的管理带来了极大的灵活性。

    15.4 对名称空间的思考 - 图1

    图 15.1 名称层次图