1:排版与格式
相对独立的程序块之间、变量说明之后必须加空行。
一条语句不能过长,如不能拆分需要分行写。一行到底多少字符换行比较合适,产品可以自行确定。
多个短语句(包括赋值语句)不允许写在同一行内,即一行只写一条语句。
所有的缩进皆为4个空格
分隔号(如大括号)应各自独立占一行并且位于同一列,同事与引用他们的语句左对齐
在函数的开始,类和接口的定义以及 if/for/do/while/switch/case等语句中均要采用此种缩进方式
每行只写一条语句
相对独立的程序之间,变量说明之后必须加空行
2:变量命名
一个变量只有一个功能,不能把一个变量用作多种用途。
防止局部变量与全局变量同名。
变量的名字应当使用“名词”或者“形容词+名词”
用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号
int minValue; int maxValue; int SetValue(…); int GetValue(…); int error_number; int number_of_completed_connection; if (!flag) // 表示flag为假 if (condition) { return x; } else { return y; } for (col=0; col<5; col++) { for (row=0; row<100; row++) { sum = sum + a[row][col]; } } switch (variable) { case value1 : … break; case value2 : //明确注释 case value3 : … break; … default : … break; }
3:函数
参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。
例如:
void SetValue(int width, int height); // 良好的风格 void SetValue(int, int); // 不良的风格 float GetValue(void); // 良好的风格 float GetValue(); // 不良的风格
参数命名要恰当,顺序要合理。
void StringCopy(char *str1, char *str2); // 不良的风格 void StringCopy(char *strDestination,const char *strSource); // 良好的风格
如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。
void StringCopy(char *strDestination,const char *strSource); // 良好的风格
避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。
尽量不要使用类型和数目不确定的参数。
不要省略返回值的类型。如果函数没有返回值,那么应声明为void类型。
4:注释
// 和 /* */
5: 防止文件重复包含
#ifndef TIMER_H #define TIMER_H .. #endif
6:常见的缩写
argument 可缩写为 arg
buffer 可缩写为 buff
clock 可缩写为 clk
command 可缩写为 cmd
compare 可缩写为 cmp
configuration 可缩写为 cfg
device 可缩写为 dev
error 可缩写为 err
hexadecimal 可缩写为 hex
increment 可缩写为 inc、
initialize 可缩写为 init
maximum 可缩写为 max
message 可缩写为 msg
minimum 可缩写为 min
parameter 可缩写为 para
previous 可缩写为 prev
register 可缩写为 reg
semaphore 可缩写为 sem
statistic 可缩写为 stat
synchronize 可缩写为 sync
temp 可缩写为 tmp
7:用正确的反义词组命名具有互斥意义的变量或相反动作的函数
add/remove begin/end create/destroy insert/delete first/last get/release increment/decrement put/get add/delete lock/unlock open/close min/max old/new start/stop next/previous source/target show/hide send/receive source/destination copy/paste up/down
8:宏、常量
#define RECTANGLE_AREA(a, b) ((a) * (b))
使用宏时,不允许参数发生变化。
9:注意
禁止内存操作越界
禁止内存泄漏
禁止引用已经释放的内存空间