1.1 目的和要求
为什么要有编码规范
编码规范对于程序员而言尤为重要,有以下几个原因:
- 一个软件的生命周期中,80%的花费在于维护
- 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
- 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码
- 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品
为了执行规范,每个软件开发人员必须一致遵守编码规范。
这是一个强制执行的标准,而不是一个指南。当我们的标准不适应的时候,我们可以讨论、修改标准。但是已经制定的标准一定要得到执行。
1.2 检查列表
| 文件类型 |
序号 |
规范要点 |
参照标准 |
| JAVA文件 |
1 |
JAVA文件是否有符合规范的版权和版本信息(简称“head”)。 |
1.3 |
| 2 |
每次修改JAVA文件后是否在“head”的HISTORY中添加修改信息。 |
1.3 |
|
| 3 |
JAVA文件中“类”,“类变量”,“方法”是否有符合规范的注释。 |
1.4 |
|
| 4 |
在“方法”的内部是否有一定数量的注释。 |
1.4 |
|
| 5 |
JAVA文件中的各种元素是否符合JAVA命名规范。 |
1.5 |
|
| 6 |
JAVA文件中整个的书写格式和元素的先后顺序是否规范。 |
1.6 |
1.3 JAVA文件的版权和版本信息(简称“头”)
版权和版本信息必须在 java 文件的开头,其他不需要出现在 javadoc 的信息也可以包含在这里。
所有的头文件都可以自动生成,详见<关于eclipse创建新类自动添加注释的说明.rar>
如:
/*
* Author: wufengt
* Created Date:2008-12-1*
| 日期格式: YYYYMMDD |
* History:
* ------------------------------------------------------------------------------
* Date | Author | Change Description
* 20051212| wuf | 优化编码的格式
* 20051215 | wuf | 再次优化编码的格式
*/
1.4 JAVA文件的注释规范
1.Class类的注释
类的注释,一般是用来解释类的,主要包括这个类的功能描述,注意事项和一些重要功能的使用实例。
/**
* 注释内容
*/
public class CounterSet extends Observable implements Cloneable{
…
}
2.成员变量的注释
public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量可以使用一般注解也可以使用JavaDoc进行注释,所有的成员变量都必须有注释。
// 操作状态标志:0.新增,1.修改,2.查看
protected long modifyStatus = 0;
/**
* 每一页的条目数
*/
Public int pageSize = 0;
3.方法的注释
所有方法都必须用JavaDoc进行注释,所有的方法都必须有注释。
/**
* 保存一个session对象
* @param key 变量名称
* @param val 传入对应的对象
*/
public void setSessionValue(String key, Object val) {
…
}
4.方法内部的注释
复杂的方法内部必须有一定数量的注释,注释可以使用单行或多行注释。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则;对代码的注释应放在其上方相邻位置,不可放在下面;对结构中的每个变量的注释应放在此变量的右方;同一结构中不同域的注释要对齐。一般使用两种注释方法:
// 注释一行
/* ...... */ 注释若干行
5.javadoc注释标签语法
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
//@exception 对方法的说明 对方法可能抛出的异常进行说
1.5 JAVA元素的命名规则
一般命名约定:
1) 尽量使用完整的英文描述符
2) 采用适用于相关领域的术语
3) 采用大小写混合使名字可读
4) 尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一
5) 避免使用长的名字(最好小于 15 个字母)
6) 避免使用类似的名字,或者仅仅是大小写不同的名字
7) 避免使用下划线(除静态常量等)
命名规范:
| 元素名称 |
命名规则 |
示例 |
| 包(Package) |
采用完整的英文描述符,应该都是由小写字母组成。对于全局包,将你的Internet 域名反转并接上包名。 |
com.srt.moa.action |
| 类(Class) |
采用完整的英文描述符,所有单词的第一个字母大写。 |
Customer, SavingsAccount
|
| 接口(Interface) |
采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。习惯上,名字后面加上后缀 able,ible 或者 er,但这不是必需的。(不需要写Interface后缀) |
Contactable, Prompter
|
| 异常(Exception) |
通常采用字母 e 表示异常。 |
e |
| 类变量 |
字段采用完整的英文描述,第一个字母小写,任何中间单词的首字母大写. |
firstName, lastName
|
| 局部变量 |
同类变量的命名规则 |
|
| 获取、设置成员函数 |
获取成员函数 被访问字段名的前面加上前缀 get,布尔型的获取成员函数 所有的布尔型获取函数必须用单词 is 做前缀。 设置成员函数 被访问字段名的前面加上前缀 set。(使用eclipse自动生成) |
getFirstName(), getLastName() isPersistent(), isString() setFirstName(), setLastName(), setWarpSpeed()
|
| 普通成员函数 |
普通成员函数 采用完整的英文描述说明成员函数功能,第一个单词尽可能采用一个生动的动词,第一个字母小写。 |
openFile(), addAccount()
|
| 静态常量字段(static final) |
全部采用大写字母,单词之间用下划线分隔。 |
MIN_BALANCE, DEFAULT_DATE
|
| 循环计数器 |
通常采用字母 i,j,k 或者counter 都可以接受。 |
i, j, k, counter
|
| 数组 |
数组应该总是用下面的方式来命名:byte[] buffer; 而不是: byte buffer[]; |
byte[] buffer |
1.6 JAVA的排版规范和元素的先后顺序
1. 排版规