后台Java程序编码标准
2
———————————————————————————————— 作者:
———————————————————————————————— 日期:
3
Java程序编码规范
后台技术中心
编 写 人:汪源
编写时间:2009-3-27
部 门 名:后台技术中心
4 修订记录
编号 修订内容简述 修订日期 版本 修订人
1 初始版本 2009-3-27 0.1 汪源
5 总体约定
1. 一个工程中的所有文件应统一使用GBK或UTF-8编码。
2. 代码使用大小为4的TAB缩进。
3. 代码使用package组织,package名应以ease.开关。
4. 使用Vector等集合框架类时,应指定模板类型参数。
命名规范
类名、文件名、枚举变量等统一使用首字母大写,如
01 class TableInfo {
02 ...
03 };
函数参数、局部变量、函数名等统一使用Sun风格的命名,即第一个单词小写,其它单词首字母大写,如:
01 int maxLength;
02 NtseIndex *primaryKey;
03
bool dropTable(...) {
04 //
05 }
不允许使用匈牙利式命名法。
常量统一使用全大写,单词之间用_连接,如:
01 static final int NTSE_NAME_LEN;
目录名统一使用全小写字母,单词之间用-连接。
语句
主要是{放在同一行及空格使用上的约定。
if/else形如(注意其中每个空格的位置):
01 if (xxx) {
02 ...
03 } else if (xxx) {
04 ...
05 } else {
06 ...
07 }
6 for/while形如:
01 for (xxx; xxx; xxx) {
02 ...
03 }
04 while (xxx) {
05 ...
06 }
switch形如:
01 switch (xxx) {
02 case aaa:
03 ...
04
break;
05 case bbb:
06 ...
07 break;
08 default:
09 break;
10 }
函数定义形如:
01
int foo(int p1, int p2) {
02 ...
03 }
try/catch形如:
01 try {
02 ...
03 } catch (SomeException &e) {
04 ...
05 } finally {
06 ...
07 }
空白
基本的风格是操作符的两边都要用空格,如:
01 a = b * 2 + c;
但++/--操作与表达式之间不要用空格,如应使用:
01 i++;
02 i--;
而不要使用
7 01 i ++;
02 i --;
;与,操作符应该前边没有空格,后边有空格,如应使用:
01 for (i = 0; i < 100; i++)
02 some_func(arg1, arg2, arg3);
而不要使用
01 for (i = 0 ; i < 100 ; i++)
02 some_func(arg1 , arg2 , arg3)
注释
统一使用Java风格的注释,如函数注释形如:
01 /** 函数简要声明
02 *
03 * [可选]函数详细说明
04 * @pre 先验条件,在调用函数之前必须满足的条件
05 * @post 后验条件,函数完成之后必须满足的条件
06 * @param 参数1 参数说明
07 * @param 参数2 参数说明
08 * ...
09 * @throw SomeException 异常说明
10 * @return 返回值说明
11 */
注释写在哪里
1. 被子类重写的虚函数的注释应该写在基类中,如果子类的实现没有什么特殊之处,在子类中写"@see 基类函数"即可,没有必要将一个注释拷贝多份。
各对象注释规范
开发人员应该为项目主体实现代码中的所有类、类成员、函数等书写完整的注释。单元测试等非主体实现代码的注释要求由主管根据项目需要决定。
代码质量
1. 进行良好的功能分解与模块划分,各模块应拥有明确单一的职责,遵循高内聚低耦合
8 的原则;
2. 保持代码的封装性,各模块不应对外透露不必要的实现细节,使用各模块时,防止依赖于模块的内部实现或对模块的实现做各种假设;
3. 代码重复是代码中最最常见的问题,尽量消除重复代码;
4. 保持代码结构尽可能的清晰,保证良好的可读性,保持各类、函数、变量具有单纯的功能;
5. 恰到好处的注释,对于含义自明的代码无需重复注释(按规范要求必须包含的函数等说明注释除外),代码的目的或存在原因不太明确时应用注释说明;
6. 函数体中适当的使用空行划分出各个逻辑上紧密联系的段落是增强代码可读性的好方法;
7. 模块规模较为庞大时,应考虑分离模块的主干流程代码与非主干流程,这样有助于保持主干流程代码的简洁性,增强对模块整体上的掌控能力;
8. 不要保留大量的无用代码、历史遗留代码等,代码使用SVN管理,不会丢失;