Java代码书写规范
一、通用規(guī)范
1.1命名規(guī)范
1.?使用全單詞表示
2.?使用貼切的詞匯
3.?使用大小寫混合
4.?盡量少用縮略詞,否則,維護一個標準的縮略詞表
5.?避免過長,小于15
6.?避免類似的命名或僅在大小寫上區(qū)分的命名
7.?標準縮略詞做一個單詞處理
1.2文檔規(guī)范
1.?增加注釋,以確保代碼清晰
2.?無需注釋的程序,可能也不值得運行
3.?避免修飾性注釋
4.?保持注釋簡潔
5.?寫代碼之前寫注釋
6.?注釋中說明代碼的原因,而不是結(jié)果
二、Java編碼規(guī)范
2.1命名和大小寫規(guī)范:
下面這些廣泛使用的命名規(guī)范可以應(yīng)用到Java中的包、類、方法、屬性和常量。因為這些規(guī)范的使用非常普遍,而且它們還影響到了我們定義的類的公共API,所以我們應(yīng)該認真遵守這些規(guī)范:
1.?包
???保證包的名稱是唯一的,包的名稱前綴以我們的網(wǎng)絡(luò)域名稱,包名小寫(例如com.itsv.utils)置于文件最上一行
2.?類
???第一個字母必須大寫,所以類名稱是大小寫混合的(例如String);如果類名稱是由多個單詞組成的,那么每個單詞都應(yīng)該以大寫字母開頭(例如StringBuffer);如果一個類名稱或者類名稱中的一個單詞是字母縮寫詞,那么我們可以把這個縮寫詞中的每個字母都寫成大寫(例如URL、HTMLParser)。因為設(shè)計的類是用來代表對象的,所以我們在為類起名稱時應(yīng)盡量選擇名詞。
???如果是某一種特殊類別的類,則可以統(tǒng)一采用特殊簡短后綴來標識,這些后綴全部大寫。例如,對所有處理與數(shù)據(jù)庫相關(guān)的類,可以在類名后加上DAOImpl來標識
引用類: 全部置于包名之后,文件所定義類名之前
類的定義順序:
class?xxx
constructors
finalize
public?member?functions
protected?member?functions
private?member?functions
private?fields
3.?接口
???接口名稱遵循的大小寫規(guī)則和類名稱是一樣的。用接口來提供一些關(guān)于實現(xiàn)它的類的額外信息,常用形容詞作為接口名稱(例如Runnable),當接口更像一個抽象的超類時,我們又用名詞來作為接口的名稱(例如Document)
在創(chuàng)建類之前先創(chuàng)建公共接口,以確定類的應(yīng)用存根,接口的命名用描述性的形容詞或名詞,或者加前綴I?或后綴Ifc:
Runnable
Cloneable
Singleton
DataInput
4.?方法
???方法名稱總是以小寫字母開頭。如果名稱中包含的單詞多于一個(一般使用動詞和名詞組合而成),那么除第一個單詞外的所有單詞都應(yīng)該以大寫字母開頭,動詞放在首單詞,例如insert()、insertObject()。
成員變量訪問方法accessor的命名:
使用Getter-get和Setter-set方法,對于boolean類型的可以使用is代替get
Getter還有can和has
成員方法的范圍:
范圍 | 描述 | 正確使用方法 |
Public | 任何類或?qū)ο蟮娜魏纬蓡T方法中可以調(diào)用 | 當該方法必須被當前類分支之外的類或?qū)ο笳{(diào)用時 |
Protected | 只能被同類及所有子類的成員方法調(diào)用 | 當該方法只能被當前類及其分支之內(nèi)的類或?qū)ο笳{(diào)用時 |
private | 只能被同類的成員方法調(diào)用,子類的成員方法不能調(diào)用 | 封裝一個類的特有方法,當前類所特有,其他類或子類沒有 |
缺省的為軟件包級可用,對相同軟件包package的類可使用,不能在不同軟件包的類中調(diào)用 |
5.?屬性和常量
???非常量的屬性名稱所遵循的大小寫規(guī)則和方法名稱是一樣的。如果一個屬性是靜態(tài)final類型的常量,那么該屬性的所有字母都應(yīng)該大寫。如果常量的名稱中包含多個單詞,那么應(yīng)該用下劃線來分隔這些單詞(例如MAX_VALUE)。此外,選擇的屬性名稱應(yīng)該是最能說明屬性或其取值的含義的。
集合屬性(Array,?Vector)采用復(fù)數(shù)
firstName
orderItems
常量命名
static?final?MAX_VALUE
屬性范圍
范圍 | 描述 | 用于 |
public | 可以在所有類的方法中引用 | 最好不定義此類屬性 |
protected | 可以在本類及子類方法中引用 | 最好不定義此類屬性 |
private | 只能用于同類的方法中 | 所有屬性都應(yīng)是此種類型并通過訪問器accessor訪問 |
6.?參數(shù)
???方法參數(shù)名稱會出現(xiàn)在方法的文檔中,所以參數(shù)含義應(yīng)盡可能明確。一般參數(shù)名稱為一個單詞。
成員函數(shù)的參數(shù)標準:
使用接口代替類作為參數(shù),實現(xiàn)多態(tài)性
7.?局部變量
???命名規(guī)則和方法以及屬性的命名規(guī)則一樣。
2.2?注釋規(guī)范
2.2.1總體說明
1.?三種類型的Java注釋
注釋類型 | 用于 | 例子 |
文檔注釋 | 寫在類、接口、成員函數(shù)和屬性的定義緊前方,由javadoc用于創(chuàng)建類的外部文檔。 | /** ?*?document?comments ?*/ |
C風格注釋 | 暫時注釋不用的代碼 | /* ???comments ?*/ |
單行注釋 | 在成員函數(shù)中用于注釋商業(yè)邏輯,代碼段,變量定義 | //?comments |
文檔注釋的主體部分一開始應(yīng)該先用一句話概括類、接口、方法或?qū)傩酝瓿傻墓δ?#xff0c;書寫時單獨占一行。概括性句子的后面還可以跟若干條,詳細介紹類、接口、方法或?qū)傩缘淖⑨屨Z句及段落。
在描述性的段落之后,文檔注釋還可以包括其他一些段落,每個段落都以一個特殊的文檔注釋標簽開始,例如@auther、@param。
2.?doc注釋的標簽
@author?名稱???后加上相應(yīng)的作者
@version?文本??插入指定文本的版本信息
@param?參數(shù)-名稱描述
@return?描述
@exception?完整的類名稱?描述信息
@throws?完整的類名稱?描述信息
@see?引用其他類,格式如下:@see?類名??
???????????????????????????@see?完整類名
???????????????????????????@see?完整類名#方法名
{@link引用}
@deprecated?解釋
@since?版本號
@serial?描述信息
@serialField名稱?類型?描述信息
@serialData描述信息
@beaninfo信息
文檔注釋的描述信息可以包括簡單的HTML標注標簽,不包括HTML的主要結(jié)構(gòu)標簽,例如<H2>和<HR>等。
在文檔注釋中使用標簽{@link}來引用超級鏈接或者是交叉引用,避免用標簽<A>。
如果希望在文檔注釋中包括圖像,可以把圖像文件放在源代碼目錄下的doc文件的子目錄中,然后把圖像取名為和類一樣的名稱,并在名稱之后加上數(shù)字作為后綴,例如,可以在叫做Circle類的文檔注釋中包括下面這個HTML標簽,它定義了出現(xiàn)在注釋中的第二張圖片:<IMG?src=”doc-files/Circles-2.gif”>?
2.2.2具體注釋內(nèi)容
1.?注釋類
類功能說明:注釋類的功能
@author?注釋類的作者
@see??注釋引用類的情況
@version?注釋類的版本信息
2.?注釋成員方法
l?頭部注釋
1.?功能描述:描述成員方法的功能及存在的原因(必填)
2.?@param?參數(shù)及名稱描述(必填)
3.?@return?返回值(必填)
4.?@exception?描述信息
5.?@see?引用說明
6.?@since?版本號
7.?存在問題:存在的尚未解決的問題
8.?使用范圍:確定使用范圍及原因
9.?外部變動:對其他對象的變動注釋
10.?修改歷史:注明修改時間、修改人、修改內(nèi)容、修改原因(必填)
11.?調(diào)用方法:說明調(diào)用的前提條件和事后條件、說明并發(fā)調(diào)用情況
l?內(nèi)部注釋
1.?在方法內(nèi)部的開始部分統(tǒng)一注釋方法的邏輯
2.?控制結(jié)構(gòu),結(jié)構(gòu)性語句的起始位置需要注明,控制結(jié)構(gòu)的尾部
3.?注明局部變量
4.?注釋結(jié)束括號}
2.3編寫清晰的代碼
1.?注釋文檔
2.?段落化
3.?多行語句段落化
4.?使用空格和空行
5.?方法不能太長,遵循30秒規(guī)則
6.?定義消息的傳遞,在注釋中體現(xiàn)
7.?簡短的命令行
8.?將比較的常數(shù)放在左方,以防止誤寫為賦值語句
三、?JAVA命名縮略詞表
參見縮略詞表。
總結(jié)
以上是生活随笔為你收集整理的Java代码书写规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新手司机,请问怎么才知道自己的机油该不该
- 下一篇: Java.util.Date类型的转化成