1. 使用全單詞表示
2. 使用貼切的詞彙
3. 使用大小寫混合
4. 盡量少用縮略詞,否則,維護一個标準的縮略詞表
5. 避免過長,小于15
6. 避免類似的命名或僅在大小寫上區分的命名
7. 标準縮略詞做一個單詞處理
1. 增加注釋,以確定代碼清晰
2. 無需注釋的程式,可能也不值得運作
3. 避免修飾性注釋
4. 保持注釋簡潔
5. 寫代碼之前寫注釋
6. 注釋中說明代碼的原因,而不是結果
下面這些廣泛使用的命名規範可以應用到java中的包、類、方法、屬性和常量。因為這些規範的使用非常普遍,而且它們還影響到了我們定義的類的公共api,是以我們應該認真遵守這些規範:
1. 包
保證包的名稱是唯一的,包的名稱字首以我們的網絡域名稱,包名小寫(例如com.itsv.utils)置于檔案最上一行
2. 類
第一個字母必須大寫,是以類名稱是大小寫混合的(例如string);如果類名稱是由多個單詞組成的,那麼每個單詞都應該以大寫字母開頭(例如stringbuffer);如果一個類名稱或者類名稱中的一個單詞是字母縮寫詞,那麼我們可以把這個縮寫詞中的每個字母都寫成大寫(例如url、htmlparser)。因為設計的類是用來代表對象的,是以我們在為類起名稱時應盡量選擇名詞。
如果是某一種特殊類别的類,則可以統一采用特殊簡短字尾來辨別,這些字尾全部大寫。例如,對所有處理與資料庫相關的類,可以在類名後加上daoimpl來辨別
引用類: 全部置于包名之後,檔案所定義類名之前
類的定義順序:
class xxx
constructors
finalize
public member functions
protected member functions
private member functions
private fields
3. 接口
接口名稱遵循的大小寫規則和類名稱是一樣的。用接口來提供一些關于實作它的類的額外資訊,常用形容詞作為接口名稱(例如runnable),當接口更像一個抽象的超類時,我們又用名詞來作為接口的名稱(例如document)
在建立類之前先建立公共接口,以确定類的應用存根,接口的命名用描述性的形容詞或名詞,或者加字首i 或字尾ifc:
runnable
cloneable
singleton
datainput
4. 方法
方法名稱總是以小寫字母開頭。如果名稱中包含的單詞多于一個(一般使用動詞和名詞組合而成),那麼除第一個單詞外的所有單詞都應該以大寫字母開頭,動詞放在首單詞,例如insert()、insertobject()。
成員變量通路方法accessor的命名:
使用getter-get和setter-set方法,對于boolean類型的可以使用is代替get
getter還有can和has
成員方法的範圍:
範圍
描述
正确使用方法
public
任何類或對象的任何成員方法中可以調用
當該方法必須被目前類分支之外的類或對象調用時
protected
隻能被同類及所有子類的成員方法調用
當該方法隻能被目前類及其分支之内的類或對象調用時
private
隻能被同類的成員方法調用,子類的成員方法不能調用
封裝一個類的特有方法,目前類所特有,其他類或子類沒有
預設的為軟體包級可用,對相同軟體包package的類可使用,不能在不同軟體包的類中調用
5. 屬性和常量
非常量的屬性名稱所遵循的大小寫規則和方法名稱是一樣的。如果一個屬性是靜态final類型的常量,那麼該屬性的所有字母都應該大寫。如果常量的名稱中包含多個單詞,那麼應該用下劃線來分隔這些單詞(例如max_value)。此外,選擇的屬性名稱應該是最能說明屬性或其取值的含義的。
集合屬性(array, vector)采用複數
firstname
orderitems
常量命名
static final max_value
屬性範圍
用于
可以在所有類的方法中引用
最好不定義此類屬性
可以在本類及子類方法中引用
隻能用于同類的方法中
所有屬性都應是此種類型并通過通路器accessor通路
6. 參數
方法參數名稱會出現在方法的文檔中,是以參數含義應盡可能明确。一般參數名稱為一個單詞。
成員函數的參數标準:
使用接口代替類作為參數,實作多态性
7. 局部變量
命名規則和方法以及屬性的命名規則一樣。
注釋類型
例子
文檔注釋
寫在類、接口、成員函數和屬性的定義緊前方,由javadoc用于建立類的外部文檔。
/**
* document comments
*/
c風格注釋
暫時注釋不用的代碼
/*
comments
單行注釋
在成員函數中用于注釋商業邏輯,代碼段,變量定義
// comments
文檔注釋的主體部分一開始應該先用一句話概括類、接口、方法或屬性完成的功能,書寫時單獨占一行。概括性句子的後面還可以跟若幹條,詳細介紹類、接口、方法或屬性的注釋語句及段落。
在描述性的段落之後,文檔注釋還可以包括其他一些段落,每個段落都以一個特殊的文檔注釋标簽開始,例如@auther、@param。
@author 名稱 後加上相應的作者
@version 文本 插入指定文本的版本資訊
@param 參數-名稱描述
@return 描述
@exception 完整的類名稱 描述資訊
@throws 完整的類名稱 描述資訊
@see 引用其他類,格式如下:@see 類名
@see 完整類名
@see 完整類名#方法名
{@link引用}
@deprecated 解釋
@since 版本号
@serial 描述資訊
@serialfield名稱 類型 描述資訊
@serialdata描述資訊
@beaninfo資訊
文檔注釋的描述資訊可以包括簡單的html标注标簽,不包括html的主要結構标簽,例如<h2>和<hr>等。
在文檔注釋中使用标簽{@link}來引用超級連結或者是交叉引用,避免用标簽<a>。
如果希望在文檔注釋中包括圖像,可以把圖像檔案放在源代碼目錄下的doc檔案的子目錄中,然後把圖像取名為和類一樣的名稱,并在名稱之後加上數字作為字尾,例如,可以在叫做circle類的文檔注釋中包括下面這個html标簽,它定義了出現在注釋中的第二張圖檔:<img src=”doc-files/circles-2.gif”>
類功能說明:注釋類的功能
@author 注釋類的作者
@see 注釋引用類的情況
@version 注釋類的版本資訊
l 頭部注釋
1. 功能描述:描述成員方法的功能及存在的原因(必填)
2. @param 參數及名稱描述(必填)
3. @return 傳回值(必填)
4. @exception 描述資訊
5. @see 引用說明
6. @since 版本号
7. 存在問題:存在的尚未解決的問題
8. 使用範圍:确定使用範圍及原因
9. 外部變動:對其他對象的變動注釋
10. 修改曆史:注明修改時間、修改人、修改内容、修改原因(必填)
11. 調用方法:說明調用的前提條件和事後條件、說明并發調用情況
l 内部注釋
1. 在方法内部的開始部分統一注釋方法的邏輯
2. 控制結構,結構性語句的起始位置需要注明,控制結構的尾部
3. 注明局部變量
4. 注釋結束括号}
1. 注釋文檔
2. 段落化
3. 多行語句段落化
4. 使用空格和空行
5. 方法不能太長,遵循30秒規則
6. 定義消息的傳遞,在注釋中展現
7. 簡短的指令行
8. 将比較的常數放在左方,以防止誤寫為指派語句
參見縮略詞表。