一.1 目的
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)
一.2 程序内命名规范
l Package 的命名 :Package 的名字应该都是由一个小写单词组成。
l Class 的命名 :Class 的名字必须由大写字母开头而其他字母都小写的单词组成
l Class 变量的命名 :变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。
l Static Final 变量的命名 :Static Final 变量的名字应该都大写,并且指出完整含义。
l 参数的命名 :参数的名字必须和变量的命名规范一致。
l 数组的命名 :数组应该总是用下面的方式来命名: byte[] buffer; 而不是 byte buffer[];
l 方法的参数 :使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(int size){
this.size = size;
}
一.3 文件命名规范
l 文件名由英文单词组成,每个单词的首字母大写,不要超过4个单词,如ShipOrder.jsp。
l Java文件的文件名要与程序中的public类名相同。
l Servet文件要以Servlet做为结尾,如AddCompanyServlet.java
l 业务处理组件JavaBean要以Bean为结尾,如ProcessBean.java
一.4 Java 文件样式
所有的 Java(*.java) 文件都必须遵守如下的样式规则
l 头部
版权信息
版权信息必须在 java 文件的开头,比如:
/** * Copyright 2002 Sun Microsystems, Inc. All rights reserved. */ |
其他不需要出现在 javadoc 的信息也可以包含在这里。
l Package/Imports
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。
package hotlava.net.stats;
import java.io.*; import java.util.Observable; import hotlava.util.Application;
|
这里 java.io.* 使用来代替InputStream and OutputStream 的。
l Class
接下来的是类的注释,一般是用来解释类的相关信息,包括标题、描述、。
/** * <p>Title: Example</p> * <p>Description: AuditApplicationExample</p> * <p>Copyright: Copyright (c) 200x</p> * <p>Company: xxxxx</p> * @author xxxxxx * @version 1.0 */ |
接下来是类定义,包含了在不同的行的 extends 和 implements
public class CounterSet extends Observable implements Cloneable |
l Class Fields
接下来是类的成员变量:
/** * Packet counters */ protected int[] packets; |
public 的成员变量必须生成文档(JavaDoc)。protected、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。
l 存取方法
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。
/** * Get the counters * @return an array containing the statistical data. This array has been * freshly allocated and can be modified by the caller. */ public int[] getPackets() { return copyArray(packets, offset); } public int[] getBytes() { return copyArray(bytes, offset); }
public int[] getPackets() { return packets; } public void setPackets(int[] packets) { this.packets = packets; } |
其它的方法不要写在一行上
l 构造函数
接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。 访问类型 ("public", "private" 等.) 和 任何"static", "final" 或 "synchronized" 应该在一行中。