java 程序編碼規范
命名規范
定義這個規范的目的是讓項目中所有的文檔都看起來像一個人寫的
Package 的命名
Package 的名字應該都是由一個小寫單詞組成
Class 的命名
Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成 Class
變量的命名
變量的名字必須用一個小寫字母開頭
Static Final 變量的命名
Static Final 變量的名字應該都大寫
參數的命名
參數的名字必須和變量的命名規范一致
數組的命名
數組應該總是用下面的方式來命名
byte[] buffer;
而不是
方法的參數
使用有意義的參數命名
SetCounter(int size){
this
}
Java 文件樣式
所有的 Java(*
版權信息
版權信息必須在 java 文件的開頭
/** * Copyright ?
* All right reserved
*/
其他不需要出現在 javadoc 的信息也可以包含在這裡
Package/Imports package 行要在 import 行之前
import 中標准的包名要在本地的包名之前
如果 import 行中包含了同一個包中的不同子目錄
package
import java
import java
import hotlava
這裡 java
Class 接下來的是類的注釋
/** * A class representing a set of packet and byte counters
* It is observable to allow it to be watched
* reports changes when the current set is complete
*/
接下來是類定義
CounterSet extends Observable
implements Cloneable Class Fields
接下來是類的成員變量
/** * Packet counter
*/
protected int[] packets;
public 的成員變量必須生成文檔(JavaDoc)
proceted
存取方法
接下來是類變量的存取的方法
/** * Get the counters
* @return an array containing the statistical data
* freshly allocated and can be modified by the caller
*/
public int[] getPackets() { return copyArray(packets
public int[] getBytes() { return copyArray(bytes
public int[] getPackets() { return packets; }
public void setPackets(int[] packets) { this
其它的方法不要寫在一行上
構造函數
接下來是構造函數
訪問類型 (
該在一行中
public CounterSet(int size){
this
}
克隆方法
如果這個類是可以被克隆的
public Object clone() {
try { CounterSet obj = (CounterSet)super
obj
obj
}catch(CloneNotSupportedException e) {
throw new InternalError(
+ e
}
}
類方法
下面開始寫類的方法
/** * Set the packet counters
* (such as when restoring from a database)
*/
protected final void setArray(int[] r
throws IllegalArgumentException { // // Ensure the arrays are of equal size
// if (r
//|| r
throw new IllegalArgumentException(
System
System
}
toString 方法無論如何
public String toString() {
String retval =
for (int i =
retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
}
}
main 方法
如果main(String[]) 方法已經定義了, 那麼它應該寫在類的底部.
代碼編寫格式
代碼樣式
代碼應該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換行)
文檔化
必須用 javadoc 來為類生成文檔。tW.WIngwIT.cOM不僅因為它是標准,這也是被各種 java 編譯器都認可的方法。使用 @author 標記是不被推薦的,因為代碼不應該是被個人擁有的。
縮進
縮進應該是每行2個空格. 不要在源文件中保存Tab字符.
在使用不同的源代碼管理工具時Tab字符將因為用戶設置的不同而擴展為不同的寬度.
如果你使用 UltrEdit 作為你的 Java 源代碼編輯器的話,
你可以通過如下操作來禁止保存Tab字符,
方法是通過 UltrEdit中先設定 Tab 使用的長度室2個空格,
然後用 Format|Tabs to Spaces 菜單將 Tab 轉換為空格。
頁寬
頁寬應該設置為80字符. 源代碼一般不會超過這個寬度, 並導致無法完整顯示,
但這一設置也可以靈活調整. 在任何情況下, 超長的語句應該在一個逗號或者 一個操作符後折行. 一條語句折行後, 應該比原來的語句再縮進2個字符.
{} 對 {} 中的語句應該單獨作為一行.
例如, 下面的第1行是錯誤的, 第2行是正確的:
if (i>
if (i>
i ++
}; // 正確
} 語句永遠單獨作為一行
那一行相對齊的位置
括號
左括號和後一個字符之間不應該出現空格
CallProc( AParameter ); // 錯誤
CallProc(AParameter); // 正確
不要在語句中使用無意義的括號
下面的例子說明錯誤和正確的用法:
if ((I) =
if (I ==
程序編寫規范
exit()
exit 除了在 main 中可以被調用外
異常
申明的錯誤應該拋出一個RuntimeException或者派生的異常
頂層的main()函數應該截獲所有的異常
垃圾收集
JAVA使用成熟的後台垃圾收集技術來代替引用計數
你必須在使用完對象的實例以後進行清場工作
寫
{
FileOutputStream fos = new FileOutputStream(projectFile);
project
}
除非輸出流一出作用域就關閉
FileOutputStream fos = new FileOutputStream(projectFile);
project
fos
Clone
下面是一種有用的方法
implements Cloneable public Object clone() {
try {
ThisClass obj = (ThisClass)super
obj
obj
} catch(CloneNotSupportedException e) {
throw new InternalError(
}
}
final 類絕對不要因為性能的原因將類定義為 final 的
(除非程序要求這樣定義) 如果一個類還沒有准備好被繼承
而不要將她定義為 final 的
訪問類的成員變量
大部分的類成員變量應該定義為 protected 的來防止繼承類使用他
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25342.html