文档从头文件、函数、标识符、变量、宏、程序效率、注释、排版、表达式、代码编辑编译、可测性、安全性、字符串操作安全、整数安全、格式化输出安全、文件IO安全、单元测试、可移植性、编程规范等方面讲述了C编程时的注意事项;本记录将摘抄一部分内容学习。
代码总体规则:1、清晰;2、简洁;3、风格统一;
头文件:
原则:
1、适合放置接口的声明,不适合放置实现;
2、文件职责单一;
3、应向稳定方向发展;
规则:
1、每个.c文件都应有一个对应的.h文件,用于声明对外的公开接口;
2、禁止头文件循环依赖;
3、.c/.h文件禁止包含用不到的头文件;
4、头文件应当自包含;
5、总是编写内部#include保护符(#define保护)
6、禁止头文件定义变量;
7、只能通过包含头文件使用其它.c提供的接口,禁止.c中通过extern调用外部函数接口,变量;
8、禁止在extern "c"中包含头文件
函数
原则:
1、一个函数仅完成一件功能;
2、重复代码尽可能提炼成函数,可以带来维护成本的降低,降低编写时问题量;
规则:
1、避免函数过长,新增函数不超过50行(非空非注释行);
2、避免函数代码块嵌套过深,新增函数代码块嵌套深度不超过4层;
3、可重入函数尽量避免使用共享变量;若需要使用,则应通过互斥手段,(关中断、信号量)对其加以保护;
4、对参数的合法性检查,有调用者负责还是有接口函数负责,应在项目组/模块内应统一规定;缺省由调用者负责;
5、对函数的错误返回码要全面处理;
6、设计高扇入,合理扇出(小于7)的函数;公共模块中的函数及底层函数应有较高的扇入;
7、废弃代码(没有被调用的函数和变量)要及时清除;
建议:
1、函数不变参数使用const,易于理解/跟踪和分析爱,把const作为默认选项,在编译时虎对其进行检查,使代码更牢靠、安全;
2、函数应避免使用全局变量、静态局部变量和IO操作,不可避免的地方应集中处理;
3、检查函数所有非参数输入的有效性,如数据文件、公共变量等;
4、函数的参数个数不超过5个;
5、除打印函数外,不要使用可变长参函数;
6、在源文件范围内声明和定义的所有函数,除非外部可见,否则应该增加static关键字。