开发规范 1.0
munix
1、代码风格规范
1.1 C/C++/Java代码风格
命名格式:
1、文件命名都用英文小写,C代码文件命名为xxx.c,C++代码文件命名为
xxx.cc/xxx.cpp。
2、所有的命名都以英文词语定义;
3、不采用匈牙利命名法则;
4、复合词以首字大写区隔;
5、变量和函数以小写开头;
6、class、struct、union以大写开头;
7、全局变量和C++中的全局函数以“_”(下划线)开头,但不用两个以上下划线,以免和libc中的变量冲突;
8、缩写一律用全大写,并注释说明含义(一些约定俗成的用语可以不用);
9、单字变量只能用于循环,判断等临时运算中;
10、 宏定义以全大写,复合词以下划线区隔。
命名范例
局部变量命名:
int number、char* name……
局部复合变量命名:
int totalNumber、char* errorMessage……
全局变量命名:
int _currentID、char* _currentUser……
局部函数(或所有C代码中的函数):
int getNumber( )
C++中的全局函数:
int _getCurrentID( )
类、结构、联合的命名:
class User {
……
};
struct UserInfo {
……
};
缩写:
char* PSTNNumber、int LDAPAccount……
约定俗成缩写:
int tcpPort,char *ipv4Address……
宏定义:
#define MAX_NUMBER 100
单字变量:
int i;
for(i=0; i<number; i++) {
……
}
空格格式:
1、“运算符”两边需要空格;
2、“逗号、分号”右边空格;
3、“左大括号”左边空格;
4、当有多个空格层次时,只保证最上面一层空格,其他不用空格。
空格范例:
int number, i;
number = 0;
i = 20
number = i * 20;
左大括号空格:
if (number < 100) {
……
}
多个空格层:
for (i=0; i<10 ; i++) {
……
} /**这里只保留了“分号”处的空格,运算符“=”,“< ”就不用空格*/
大括号格式:
1、左大括号放在行尾,并左边空格;或左大括号另一起行并与最近的函数体对齐。
2、右大括号另取一行,并独占该行(除注释)
3、左括号后的代码另取一行(除注释);
4、单行的if/while/for可以不用大括号。
大括号范例:
int main(int argc, char** argv) {
int number = 0;
printf(“number = %d\n”, number);
return 0;
}
单行处理:
if (number == 0)
return 1;
缩进格式:
1、大括号内的代码要缩进一层;
2、单行的if/while/for处理要缩进一层;
3、缩进以一个“tab”或4个空格为一层;
缩进范例:
While(res) {
…………
}
if(res == 1)
……
注释格式:
1、采用JavaDoc注释;
2、一般不用“//”注释,除和“/**/”注释有冲突列外;
3、注释部分在被注释代码之前;
4、短注释可以跟在行尾(尽量不用);
5、文件开头需要注释;
6、复杂算法需要注释;
7、缩写需要注释;
8、function声明需要注释;
9、class、struct、union声明需要注释;
10、 更改他人代码需要注释;
11、 注释用英文。
注释范例:
文件开头注释:
/**
This file wrote for Class UserInfo
@lisence GPL
@author Smith.Spud.
@version 1.0.0 2003-12-10
*/
类注释:
/** Class User for access user’s information.*/
class User {
public:
……
};
方法注释:
/**Function for get user information.
* @param userName – String type, user’s name who be read.
* @return UserInfo* - User’s information who be read, or NULL if error.
*/
UserInfo * getUserInfo(String userName);
修改他人代码:
/**
Modified by Paul in 2003-12-30 for free memory bug.
Old Code:
[old source code be marked]
*/
[new source code]
/**modified end*/
例如:
/**
Modified by Paul in 2003-12-30 for free memory bug.
Old Code:
If(p == NULL)
Free(p);
*/
if(p != NULL)
Free(p);
/**modified end*/
缩写注释:
int UID; /**User ID*/
|