命名规则:
所有命名,都尽量做到“一目了然”,并且不要太过冗长。尤其要禁止含意和所实现的功能不一致的现象。含意上一般动名词也要注意,一般函数第一个单词尽量用动词
种类 | 示例 | 说明 |
文件名 | RoleManager | 以大写字母开头的单词拼接而成 |
类名 | RoleMaterial | 以大写字母开头的单词拼接而成 |
类成员变量 | _roleId (私有) RoleName (公有) | 私有成员:以下划线开头,首字母小写,单词第一个字符大写 公有成员:以大写字母开头的单词拼接而成 |
类成员函数 | _getRoleId (私有) getRoleId (公有) | 私有函数:首字母小写,单词第一个字符大写,下划线开头 公有函数:以大写字母开头的单词拼接而成,首字母小写 |
局部变量 | roleName | 单词第一个字符大写,首字母小写 |
函数参数 | roleName | 单词第一个字符大写,首字母小写 |
全局函数 | getRoleInfo | 下划线起头,以大写字母开头的单词拼接而成 |
全局变量 | _RoleInfo | 下划线起头,以大写字母开头的单词拼接而成 |
常量定义 | ROLE_TYPE | 全大写字母的单词,单词间以下划线连接 |
可变常量(系统参数等) | _MAX_USER | 全大写字母的单词,单词间以下划线连接,整个变量以下划线开头 |
|
|
|
注释相关
共性:注释要随代码更新而变动,杜绝注释的描述和代码功能的不一致!所有注释统一都以双斜杠开头,注释尽可能单独占一行,尽量不要出现上百行都看不到一行注释的情况。
- 文件注释:写在文件最开头,注明文件中代码的作用以及注意点即可
- 函数注释:声明和实现处要一致,要和函数实现的功能相符合,不能一眼看出含意的参数要添加说明
- 代码行注释:尽可能地为每个for、while、if、else、switch都写上说明,一般在这些语句的地方,都是体现业务功能的地方。
缩进和空格
缩进用空格或者TAB键都可以,但单个文件内要统一,如果使用空格缩进,要注意,所有缩进要统一空格数量,一个缩进至少2个空格。
非缩进处的空格,不要出现两个空格连续在一起的情况
其它
大括号相关:for、while、if、else等语句,必须用大括号,且括号内的代码要单独占一行,以下是示例
for(int i=0;i<10;i++)a=1; if(b=1)a=1; else a=2; | 不良 |
for(int i=0;i<10;i++) a=1; if(b=1) a=1; else a=2; | 不良 |
for(int i=0;i<10;i++) { a=1; } if(b=1) { a=1; } Else } a=2; } | 不良 |
for(int i=0;i<10;i++){ a=1; } if(1==b){ a=1; }else if(2==b){ a=2; }else{ a=3; } | 建议用这样的写法 关于第一个大括号{是否该另起一行,关系不大,个人建议不另起行,这样在代码行比较多的时候,一页可以看到更多的代码 |
局部变量尽可能地在用到的地方定义,省得一个比较大的函数在开头的地方出现过多的局部变量的定义
不要泛滥使用多层括号结构,如下面的两个函数实现的是同样的功能,红色部分是这个函数的主要处理逻辑,明显后面一种写法更清析,特别当红色块有更多行的代码时,更显得如此
不良 | 良 |
int TypeConvert(int p_type, int p_data){ if(p_type < 0){ return -1; }else{ if(p_type < 100){ if(p_data > 0){ int ret = p_data / p_type; …… return ret; }else{ return -2; } }else{ return -3; } } } | int TypeConvert(int p_type, int p_data){ if(p_type < 0){ return -1; } if(p_type < 100){ return -3; } if(p_data <= 0){ return -2; } int ret = p_data / p_type; …… return ret; }
|
不允许将两条语句写在一行中,如:
a=3;a=a*4;
判断语句:if、while中用到的判断比较,整型和布尔型要区别对待,用整型结果当作判断条件,如:
不良 | 良 |
int a=0; if(a){ … }
| int a=0; if(0 != a){ … }
|
在比较等于的时候,如果有常量参与,尽量把常量写在前面,如:
if(a == 1) 写成 if(1 == a) 更好些
- 文件引用:尽可能地分出引用关系的层次,不要写成a引用b,b引用c,c又引用a
不到万不得已,不得使用goto- 能用整数运算,尽量避免浮点运算
- 共通的抽取:同一个业务,尽量写在一处,而不要写成多份拷贝,以便业务更改维护
- 日志:日志级别要清楚,错误、警告、普通、调试
最后:细心才能写出好代码,用心才能进步!