第一部分(基本规则)

来源:互联网 发布:小朋友齐打交mac下载 编辑:程序博客网 时间:2024/04/29 10:51

1、内部链接,外部链接

内部链接:只在本编译单元(.obj)能访问和使用的,反之,其它obj文件能访问到该变量或则该接口,那么就是外部链接了

比如

a.cpp中

void Test(){}

在b.cpp中看似访问不到Test,我们只需要在b.h中定义一个

void Test();

然后在b.cpp中就能够访问到了,链接的时候编译器会链接到a.cpp的Test函数的

能够申明为内部链接是最好的了

内部链接有哪些呢:全局静态变量,静态函数(上面的Test如果加上static在b.cpp中就访问不到了),枚举,union,内联函数

外部链接:类内部静态变量,类成员函数,全局变量,全局函数

extern 一个变量就表示从其它地方引入一个外部链接的符号了


2、逻辑设计

弱包含:B的接口中使用A,但是A不属于B的私有成员变量

强包含:B成员变量中包含了A。强包含又有hold和has。A的类型是指针,就是holds,是类型就是has了


3、设计的一些基本规则

3.1 类最小化,不要为了满足所有用户的需求去设计类。要满足大部分用户的重要接口

3.2 保持数据成员私有,这个没什么好说的了

防止全局名字冲突(3.3~3.4)

3.3 避免在文件作用域内包含带有外部链接的数据。包括全局变量,全局函数。

     全局变量通过封装在struct中,提供接口,单件去改变

     全局函数通过将各个函数放在class中,static的方式去访问

3.4 避免在h文件的文件作用域内使用枚举,typedef和常量数据

    通过将枚举定义在struct或class内解决,常量数据通过定义在该struct的static变量解决

    如果能定义在cpp中是更好了

3.5 头文件中的宏定义卫哨。另外冗余的包含卫哨可以减少头文件打开次数

3.5 命名规范,需要区分如下类型即可

使用一个一致的方法突出类数据成员

使用一个一致的方法区分类型名字(class,struct)

使用一个一致的方法区分枚举,常量和预处理器等不变的值



0 0
原创粉丝点击