一、命名規范
-
Package 的命名
Package 的名字應該都是由一個小寫單詞組成。
Class 的命名
Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成
Class 變量的命名
變量的名字必須用一個小寫字母開頭。后面的單詞用大寫字母開頭。
Static Final 變量的命名
Static Final 變量的名字應該都大寫,並且指出完整含義。
-
參數的命名
參數的名字必須和變量的命名規范一致。
數組的命名
數組應該總是用下面的方式來命名:
byte[] buffer;
而不是:
byte buffer[];
方法的參數
使用有意義的參數命名,如果可能的話,使用和要賦值的字段一樣的名字:
SetCounter(int size){
this.size = size;
}
-
Java 文件樣式
所有的 Java(*.java) 文件都必須遵守如下的樣式規則
版權信息
版權信息必須在 java 文件的開頭,比如:
/**
* Copyright ?0?3 2000 Shanghai XXX Co. Ltd.
* All right reserved.
*/
其他不需要出現在 javadoc 的信息也可以包含在這里。
-
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 的。
-
Class
接下來的是類的注釋,一般是用來解釋類的。
/**
* A class representing a set of packet and byte counters
* It is observable to allow it to be watched, but only
* reports changes when the current set is complete
*/
接下來是類定義,包含了在不同的行的 extends 和 implements
public class CounterSet
extends Observable
implements Cloneable
Class Fields
接下來是類的成員變量:
/**
* Packet counters
*/
protected int[] packets;
public 的成員變量必須生成文檔(JavaDoc)。proceted、private和 package 定義的成員變量如果名字含義明確的話,可以沒有注釋。
-
存取方法
接下來是類變量的存取的方法。它只是簡單的用來將類的變量賦值獲取值的話,可以簡單的寫在一行上。
/**
* 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; }
其它的方法不要寫在一行上
-
構造函數
接下來是構造函數,它應該用遞增的方式寫(比如:參數多的寫在后面)。
訪問類型 ("public", "private" 等.) 和 任何 "static", "final" 或 "synchronized" 應該在一行中,並且方法和參數另寫一行,這樣可以使方法和參數更易讀。
public
CounterSet(int size){
this.size = size;
}
克隆方法
如果這個類是可以被克隆的,那么下一步就是 clone 方法:
public
Object clone() {
try {
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
obj.size = size;
return obj;
}catch(CloneNotSupportedException e) {
throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
}
}
-
類方法
下面開始寫類的方法:
/**
* Set the packet counters
* (such as when restoring from a database)
*/
protected final
void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException
{
// Ensure the arrays www.gzlij.com are of equal size
if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
throw new IllegalArgumentException("Arrays must be of the same size");
System.arraycopy(r1, 0, r3, 0, r1.length);
System.arraycopy(r2, 0, r4, 0, r1.length);
}
-
toString 方法
無論如何,每一個類都應該定義 toString 方法:
public
String toString() {
String retval = "CounterSet: ";
for (int i = 0; i < data.length(); i++) {
retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
}
}
main 方法
如果main(String[]) 方法已經定義了, 那么它應該寫在類的底部.
1、 項目名全部小寫
2、 包名全部小寫
3、 類名首字母大寫,如果類名由多個單詞組成,每個單詞的首字母都要大寫。
如:public class MyFirstClass{}
4、 變量名、方法名首字母小寫,如果名稱由多個單詞組成,每個單詞的首字母都要大寫。
如:int index=0;
public void toString(){}
5、 常量名全部大寫
如:public static final String GAME_COLOR=”RED”;
6、所有命名規則必須遵循以下規則:
1)、名稱只能由字母、數字、下划線、$符號組成
2)、不能以數字開頭
3)、名稱不能使用JAVA中的關鍵字。
4)、堅決不允許出現中文及拼音命名。
二、注釋規范
1、 類注釋
在每個類前面必須加上類注釋,注釋模板如下:
/**
* Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.
* FileName: Test.java
* 類的詳細說明
*
* @author 類創建者姓名
* @Date 創建日期
* @version 1.00
*/
2、 屬性注釋
在每個屬性前面必須加上屬性注釋,注釋模板如下:
/** 提示信息 */
private String strMsg = null;
3、 方法注釋
在每個方法前面必須加上方法注釋,注釋模板如下:
/**
* 類方法的詳細使用說明
*
* @param 參數1 參數1的使用說明
* @return 返回結果的說明
* @throws 異常類型.錯誤代碼 注明從此類方法中拋出異常的說明
*/
4、 構造方法注釋
在每個構造方法前面必須加上注釋,注釋模板如下:
/**
* 構造方法的詳細使用說明
*
* @param 參數1 參數1的使用說明
* @throws 異常類型.錯誤代碼 注明從此類方法中拋出異常的說明
*/
5、 方法內部注釋
在方法內部使用單行或者多行注釋,該注釋根據實際情況添加。
如://背景顏色
Color bgColor = Color.RED