C语言编码规范
1.程序块缩进空格数目为4
2.相对独立的程序块之间,变量的说明之后必须添加空行
3.较长的语句要分成多行书写,划分出的新行要进行适当的缩进,低优先级操作符放在新行之首
4.不允许把多个短语句写在一行中,即一行只写一条语句
5.if for while do等语句的执行语句无论多少行都要加括号{}
6.程序块的分界符应该各独占一行并且位于同一列,同时与引用他们的语句左对齐
7.在两个以上的关键字、变量、常量进行对等操作的时候,在它们的操作符之前、之后或者前后都要加上空格
l 逗号、分号只在后面添加空格
l 比较操作符,赋值操作符、算术操作符、逻辑操作符、位域操作符等双目操作符的前后都要加空格
l 单目操作符前后不加空格
l ->、.、前后不加空格
l If for while switch等与后面的括号之间应加空格,使if等关键字更加突出、明显
二.注释
1.说明性文件,如各种头文件。它们的头部应进行注释,注释序列出:版本说明、版本号、生成日期、作者、内容、功能、与其他文件的关系以及修改日志等,头文件中还应该含有函数功能的简要说明
2.原文件头部应该进进行注释,列出与上面类似的注释内容
3.函数头部应进行注释,列出:函数的目的/功能,输入参数,输出参数、返回值、调用关系等
4.边写代码边注释,写该代码的同时修改相应的注释
5.注释应该与其描述的代码位置相近,对代码的注释应该在其上方或者右方
6.数据结构声明,如果其命名不是充分自注释的,必须添加注释,对数据结构的注释因该放在其上方相邻位置
7.全局变量要有详细的注释,包括对其功能、取值范围、哪些函数或者过程存取他以及存取时的注意事项等的说明
8.注释与其所描述的内容进行同样的排版
9.将注释与其上面的代码用空行分隔开
10.Switch如果故意不用break时,应该加以注释
11.注释的目的是解释代码的目的、功能、和采用的方法
12.在程序的结束行右方加注释标记,以表明某程序块的结束
13.建议注释多使用中文
三.标识符命名
1.命名规范必须与所使用的系统风格保持一致
Unix中采用全小写加下划线的风格或者大小写混排的方式
2.不要使用数字或者比较奇怪的字符来定义标识符
3.除了编译开关和头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义
四.可读性
1.用括号明确表达式的操作顺序,避免使用默认的优先级
2.避免使用不易理解的数字,用有意义的标志来代替,涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或者宏来替代
Eg: #define TRUNK_IDLE 0
#define TRUNK_BUSY 0
3.不要使用难懂的技巧性很高的语句,除非很有必要的时候
五.变量、结构
1.严禁使用未经初始化的变量作为右值
2.构造一个模块或者函数可以修改,而其余相关的模块只能访问的公共变量
3.设计结构的时候应该力争是结构代表一种现实事物的抽象,不应该把没有关系或者关系很弱的元素放到同一结构中
4.如果两个结构的关系密切、复杂,那么应该合为一个结构
5.结构中元素的个数适用,如果元素个数过多可考虑依据某种原则把元素组成不同的子结构,以减少结构中元素的个数
6.尽量减少没有必要的数据类型默认转换或者强制转换
7.使用自定义的类型来代替基础数据类型,可以使代码的可读性提高
8.当声明用于分布式环境或者不同CPU间通信环境的数据结构时,必须考虑机器的字节序、使用的位域以及字节对齐的问题
字节对齐问题:
结构体内存对齐:1.内存偏移量必须为要存放变量字节数的倍数
2.结构体总体的大小应该为其中所占字节数最大的成员的倍数