1. 代码总体原则
1.1 清晰第一,清晰性是易于维护,易于重构的程序必须具备的特征
代码首先是给人读的,好的代码应当可以像文章一样发生朗诵出来,“程序必须为阅读它的人而编写,只是顺便用于机器执行” – Harold Abelson 和Gerald Jay Sussman
1.2 优秀的代码可以自我解释,不需要通过注释即可轻易读懂
1.3 头文件中适合放置接口的声明,不适合放置实现
1.4 除了常用的通用缩写外,不得使用单词缩写,不得使用汉语拼音
1.5 防止局部变量和全局变量同名
2. 简洁为美,简洁就是易于理解,并且易于实现
代码越长,越难以看懂,也就越容易在修改时引入错误,写的代码越多,意味着出错的地方越多,也就意味着代码的可靠性越低
2.1 废弃的代码(没有被调用的函数和全局变量)要及时清除,重复代码应该尽可能提炼成函数
2.2 文件应当职责单一
2.3 一个函数仅需要完成一件功能
2.4 新增函数不得超过50 行
3. 选择合适的风格,与原代码保持风格一直(前提是原代码有风格,有的原代码都是乱七八糟的,那就用自己风格吧,骚年)
3.1. 华为论坛 http://hi3ms.huawei.com/group/1735/threads.html (这个网址只能在华为公司内网才能打开,华为内部的 3MS资料库)
4. 头文件
对于C 语言来说,头文件的设计体现了大部分的系统设计,系统框架,不合理的头文件布局是编译时间过长的根本原因,不合理的头文件实际上就是不合理的设计,不合理的系统架构
4.1 头文件编译依赖
a.h 包含了b.h,b.h 又包含了c.h,那么a.h 就会依赖c.h,一旦c.h 修改了,a.h 也会重新编译,嵌套越深,编译时间越长,浪费大量的编译时间去解析头文件
4.2 减少头文件的包含,尤其是在头文件中包含头文件,尽量避免头文件包含头文件
4.3 原则:头文件中适合放置接口的声明,不适合放置实现
- 内部使用的函数(相当于类的私有方法),声明不能放置在头文件中,加static 修饰
- 内部使用的宏,枚举,结构定义不应放入头文件中
- 变量定义不应放在头文件中,应放在 .c 文件中
- 变量的声明尽量不要放在头文件中,亦尽量不要使用全局变量作为接口,变量是模块或单元的内部实现细节,不应通过在头文件中声明的方式直接暴露给外部,应通过函数接口的方式对外暴露,即使必须使用全局变量,也只应当在.c 中定义全局变量,在.h中声明变量为全局的
4.4 原则:头文件应当职责单一
头文件过于复杂,依赖过于复杂是导致编译时间过长的主要原因,不能循环依赖