代碼形象 JAVA

javadoc註釋規範

備註:本文結合了許多篇文章的內容加上自己的理解和經驗,將很多零散的知識點,總結和統一整理與此。

 

你必須寫註釋而且按照項目規範來的寫註釋的理由


javadoc註釋規範就是指文檔註釋,包括類、接口、方法、屬性等的說明,在一個團隊項目開發中,統一規範的註釋很重要,對於自己以後的查看源碼也極有幫助,如果沒有相應的註釋,那麼給團隊合作、自己查看源代碼都會帶來非常大的工作量。

而且需要了解的是,java doc編譯生成的文檔是html格式的,所以,我們就得遵循一些規範,不至於生成的文檔雜亂無章。

 

要注意的是,生成的文檔是 HTML 格式,而這些 HTML 格式的標識符並不是 javadoc 加的,而是我們在寫註釋的時候寫上去的。比如,需要換行時,不是敲入一個回車符,而是寫入 <br>,如果要分段,就應該在段前寫入 <p>。  

  因此,格式化文檔,就是在文檔註釋中添加相應的 HTML 標識。  

  文檔註釋的正文並不是直接複製到輸出文件 (文檔的 HTML 文件),而是讀取每一行後,刪掉前導的 * 號及 * 號以前的空格,再輸入到文檔的。如 /** 

* This is first line. <br> 

***** This is second line. <br> This is third line. */  

  編譯輸出後的 HTML 源碼則是 This is first line. <br> This is second line. <br> This is third line.   

  前導的 * 號允許連續使用多個,其效果和使用一個 * 號一樣,但多個 * 號前不能有其它字符分隔,否則分隔符及後面的 * 號都將作爲文檔的內容。

 

那麼,哪些地方需要寫註釋?

 


基本註釋

(1)類和接口

(2)構造方法

(3)普通方法(實體類對象的setter、getter方法不用註釋)

(4)全局變量

(5)字段、屬性

特殊註釋

(1)典型算法

(2)在代碼不明晰處

(3)在代碼修改處加上修改標識註釋

(4)在循環和邏輯分支組成的代碼中註釋

(5)爲他人提供的接口必須詳細註釋

 

註釋的格式、類型

單行註釋://……

塊註釋:/*……*/

文檔註釋:/**……*/

而javadoc,顧名思義,則是更多的是針對文檔註釋,本文也將大部分講文檔註釋的java規範,那麼,我們首先要了解,javadoc裏的標記

 

Tag & Parameter Usage Applies to Since
@author name Describes an author.
描述作者
Class, Interface  
@version version Provides version entry. Max one per Class or Interface.
版本條目,每個類或接口最多有一個
Class, Interface  
@since since-text Describes since when this functionality has existed.
描述這個功能塊從何時有的
Class, Interface, Field, Method  
@see reference Provides a link to other element of documentation.
提供鏈接到其他文檔元素的鏈接
Class, Interface, Field, Method  
@param name description Describes a method parameter.
描述一個參數
Method  
@return description Describes the return value.
描述返回值
Method  
@exception classname description
@throws classname description
Describes an exception that may be thrown from this method.
描述該方法可能拋出的異常
Method  
@deprecated description Describes an outdated method.
描述一個過期的方法
Method  
{@inheritDoc} Copies the description from the overridden method.
從複寫方法出拷貝來得描述
Overriding Method 1.4.0
{@link reference} Link to other symbol.
連到其他的引用
Class, Interface, Field, Method  
{@value} Return the value of a static field.
返回一個靜態作用域的值
Static Field 1.4.0

 

下面爲參考舉例,可在eclipse或myeclipse中設置模板,下文有介紹(註釋一定要緊跟者類、方法、屬性)

1、類和接口的註釋

 

  1. /**
  2. *
  3. * @ClassName Test_Singleton.java
  4. * @Description TODO
  5. * @Author
  6. * @Time 2017年3月25日 下午3:12:43
  7. *
  8. */
  9. public class Test {
  10. //……
  11. }

2、構造方法的註釋

 

 

  1. /**
  2. *
  3. * @Title: Test
  4. * @Description: TODO
  5. */
  6. public Test(){
  7. }

3、方法的註釋

 

 

  1. /**
  2. *
  3. * @Title: test
  4. * @Description: TODO
  5. * @param para1
  6. * @param para2
  7. * @return String
  8. */
  9. public String test(Integer para1,String para2){
  10. return para2;
  11. }


4、屬性、字段、全局變量的註釋

 

 

  1. /**
  2. * (說明內容)
  3. */
  4. private String name;
  5. /**
  6. * (說明內容)
  7. */
  8. private final Integer id;

 

 

 

一些標記的相關使用說明

1、@see

 

@see 的句法有三種: 

@see 類名  

@see #方法名或屬性名

@see 類名#方法名或屬性名

  1. /**
  2. * @see java.lang.String
  3. * @see #str
  4. * @see #str()
  5. * @see #main(String[])
  6. * @see java.lang.Object#toString()
  7. */
  8. public classTestJavaDoc {
  9. private Stringstr;
  10. public voidstr(){ }
  11. public staticvoid main(String[] args){ }
  12. }

生成的文檔的相關部分如下圖

2、@author、@version

這兩個標記分別用於指明類的作者和版本。缺省情況下 javadoc 將其忽略,但命令行開關 -author 和 -version 可以修改這個功能,使其包含的信息被輸出。

這兩個標記的句法如下:   

@author 作者名  

@version 版本號   

其中,@author 可以多次使用,以指明多個作者,生成的文檔中每個作者之間使用逗號 (,) 隔開。@version 也可以使用多次,只有第一次有效,生成的文檔中只會顯示第一次使用 @version 指明的版本號。如下例

  1. /**
  2. * @author Fancy
  3. * @author Bird
  4. * @versionVersion 1.00
  5. * @versionVersion 2.00
  6. */
  7. public classTestJavaDoc {}

 

生成文檔的相關部分如圖

 

3.  @param、@return 和 @exception

這三個標記都是隻用於方法的。@param 描述方法的參數,@return描述方法的返回值,@exception 描述方法可能拋出的異常。它們的句法如下: 

@param 參數名 參數說明

@return 返回值說明

@exception 異常類名 說明 

每一個 @param 只能描述方法的一個參數,所以,如果方法需要多個參數,就需要多次使用 @param 來描述。 

一個方法中只能用一個 @return,如果文檔說明中列了多個@return,則 javadoc 編譯時會發出警告,且只有第一個 @return 在生成的文檔中有效。

方法可能拋出的異常應當用@exception 描述。由於一個方法可能拋出多個異常,所以可以有多個 @exception。每個 @exception 後面應有簡述的異常類名,說明中應指出拋出異常的原因。需要注意的是,異常類名應該根據源文件的 import 語句確定是寫出類名還是類全名。示例如下:

  1. public class TestJavaDoc {
  2. /**
  3. * @param n a switch
  4. * @param b excrescent parameter
  5. * @return true or false
  6. * @return excrescent return
  7. * @exception java.lang.Exception throw when switch is 1
  8. * @exception NullPointerException throw when parameter n is null
  9. */
  10. public boolean fun(Integer n) throws Exception {
  11. switch (n.intValue()) {
  12. case 0: break;
  13. case 1: throw new Exception("Test Only");
  14. default: return false;
  15. }
  16. return true;
  17. }
  18. }

 

使用 javadoc 編譯生成的文檔相關部分如下圖:

 

 

那麼,我們該怎麼在eclipse或myeclipse中設置這些標記模板呢?

設置註釋模板的入口: Window->Preference->Java->Code Style->Code Template

下面是每個comment的設置模板,個人也可以自定義,但是團隊開發的話,就需要統一遵循一個

1、文件(Files)註釋標籤:

2、類型(Types)註釋標籤(類的註釋):

3、字段(Fields)註釋標籤:

4、構造方法(constructor)標籤:

5、方法( Methods)標籤:

6、覆蓋方法(Overriding Methods)標籤:

7、代表方法(Delegate Methods)標籤:

8、getter方法標籤:

9、setter方法標籤:

 

另外附上維基百科的java doc規範鏈接https://en.wikipedia.org/wiki/Javadoc

希望對讀者有幫助!轉載請註明出處!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章