一 命名
1.使用英文单词,而不是拼音或中文
2.组成单词不超过四个,长度在3~30
3.避免和关键字重复
4.方法名、参数名、字段和变量:使用Camel命名法。首字母小写,其他单词的首字母大写,剩余字母小写。多个名词直接相连(驼峰式)或使用"_"相连(下划线式)
5.枚举、属性、类名和委托:使用Pascal命名法。所有单词首字母都大写。单词之间或多个单词之间使用下划线连接。同一类使用相同的前缀
6.宏定义常量采用完整大写。
7.全局变量以g开头,单词首字母大写。
所有变量定义时必须进行显式初始化。
即使是全局变量、静态变量,同样要在定义进行显式初始化。
例:
//c++
//变量
struct sockaddr_in sinAddr={0};
int ret=0;
//不正确命名
struct sockaddr_in sinAddr;
int ret;
//枚举变量
FLAG_BANANA
FLAG_APPLE
FLAG_ORIGNE
STUDENTFLAG_INFORMATION
//全局定义的常量
#define MAXSIZE 65507
//全局定义变量
int gInformation = 10;
//结构体
struct ProxyParam {
SOCKET clientSocket;//变量命名
SOCKET serverSocket;
};
二 函数
函数声明/定义处的参数变量名要对应一致,参数过多可以分成多行。
int ConnectServer(SOCKET* serverSocket, char* host);
三 注释
使用//进行注释,多行注释可使用“/* …… */”
对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。
数据结构声明(包括结构体、枚举、类等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置;对结构中每个域的注释放在该域的右方。
全局变量必须有注释,包括对其功能、取值、及其他注意事项等的说明。
//标志是否通过锁卡流程;TURE = 通过锁卡流程,FALSE = 锁卡流程失败
PUBLIC BOOLEAN g_isLockCardPass = FALSE;
函数注释:
//************************
// Function: // 函数名称
// Description: // 函数功能描述
// Param: // 参数说明,包括参数的作用、取值范围等,格式如下:
// param1: 输入输出类型[IN/OUT/INOUT] 说明
// param2: 输入输出类型[IN/OUT/INOUT] 说明
// …
// Return: // 函数返回值说明
// Others: // 其它说明
// Author: // 作者
//*************************
对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。
说明:这样比较清楚程序编写者的意图,有效防止无故遗漏break语句。
case CMD_A:
ProcessA();
break;
case CMD_B:
ProcessB ();
// 跳转到case CMD_C
case CMD_C:
ProcessC();
break;