描述
对于两部分软件,如果它们不能在同一个程序里很容易地用在一起,那么我们就称这两部分软件是冲突的。可重用代码应该尽可能地避免这种冲突。程序库使用的名字可能会和其他程序库的名字发生冲突,这些冲突包括全局名称,宏名称和环境名称相互之间的冲突。常用的解决方法是命名约定和命名空间结构
命名约定
- 提高名称的唯一性,每个具有外部链接的全局名称都应该加上前缀,实际中,很常用的是加一个字母或者两个字母。或者可以加上程序库的名称,甚至开发这个程序库的公司名称(增强唯一性)。
- 私有保护,减少由于多继承造成的同名函数调用的多意性。
- 为了减少需要加上前缀的全局名称数量,程序库应该使用名字空间结构,不过程序员使用的话就需要加命名空间的结构或者使用using namespace xx(命名空间);
- 宏名称冲突也是比较常见,宏名称冲突并不是仅仅只是另外的宏名称冲突,其他函数命名也是会造成冲突。因此应尽可能地少定义公共宏(公共文件定义的宏);对那些不能去掉的公共宏,使用命名约定(加前缀)。
- 环境名称,主要是文件的名称冲突,将相同的名称冲突文件放在不同的目录,然后包含进来。
- 6.