Java經驗點滴:類注釋文檔編寫方法

來源:互聯網
上載者:User

文章來源:csdn 作者:chensheng913

對於Java語言,最體貼的一項設計就是它並沒有打算讓人們為了寫程式而寫程式——人們也需要考慮程式的文檔化問題。對於程式的文檔化,最大的問題莫過於對文檔的維護。若文檔與代碼分離,那麼每次改變代碼後都要改變文檔,這無疑會變成相當麻煩的一件事情。

解決的方法看起來似乎很簡單:將代碼同文檔“連結”起來。為達到這個目的,最簡單的方法是將所有內容都置於同一個檔案。然而,為使一切都整齊劃一,還必須使用一種特殊的注釋文法,以便標記出特殊的文檔;另外還需要一個工具,用於提取這些注釋,並按有價值的形式將其展現出來。這些都是Java必須做到的。

用於提取注釋的工具叫作javadoc。它採用了部分來自Java編譯器的技術,尋找我們置入程式的特殊注釋標記。它不僅提取由這些標記指示的資訊,也將毗鄰注釋的類名或方法名提取出來。這樣一來,我們就可用最輕的工作量,產生十分專業的程式文檔。

javadoc輸出的是一個HTML檔案,可用自己的Web瀏覽器查看。該工具允許我們建立和管理單個源檔案,並生動產生有用的文檔。由於有了jvadoc,所以我們能夠用標準的方法建立文檔。而且由於它非常方便,所以我們能輕鬆獲得所有Java庫的文檔。

2 具體文法

所有javadoc命令都只能出現於“/**”注釋中。但和平常一樣,注釋結束於一個“*/”。主要通過兩種方式來使用javadoc:嵌入的HTML,或使用“文檔標記”。其中,“文檔標記”(Doc
tags)是一些以“@”開頭的命令,置於注釋行的起始處(但前置的“*”會被忽略)。
有三種類型的注釋文檔,它們對應於位於注釋後面的元素:類、變數或者方法。也就是說,一個類注釋正好位於一個類定義之前;變數注釋正好位於變數定義之前;而一個方法定義正好位於一個方法定義的前面。如下面這個簡單的例子所示:

/** 一個類注釋 */
public class docTest {
/** 一個變數注釋 */
public int i;
/** 一個方法注釋 */
public void f() {}
}

注意javadoc只能為public(公用)和protected(受保護)成員處理注釋文檔。“private”(私人)和“友好”(詳見5章)成員的注釋會被忽略,我們看不到任何輸出(也可以用-private標記包括private成員)。這樣做是有道理的,因為只有public和protected成員才可在檔案之外使用,這是客戶程式員的希望。然而,所有類注釋都會包含到輸出結果裡。

上述代碼的輸出是一個HTML檔案,它與其他Java文檔具有相同的標準格式。因此,使用者會非常熟悉這種格式,可在您設計的類中方便地“漫遊”。設計程式時,請務必考慮輸入上述代碼,用javadoc處理一下,觀看最終HTML檔案的效果如何。

3 嵌入HTML
javadoc將HTML命令傳遞給最終產生的HTML文檔。這便使我們能夠充分利用HTML的巨大威力。當然,我們的最終動機是格式化代碼,不是為了嘩眾取寵。下面列出一個例子:

/**
*
* System.out.println(new Date());
*

*/

亦可象在其他Web文檔裡那樣運用HTML,對普通文本進行格式化,使其更具條理、更加美觀:
/**
* 您甚至可以插入一個列表:
*

*
項目一
*
項目二
*
項目三
*

*/

注意在文檔注釋中,位於一行最開頭的星號會被javadoc丟棄。同時丟棄的還有前置空格。javadoc會對所有內容進行格式化,使其與標準的文檔外觀相符。不要將

這樣的標題當作嵌入HTML使用,因為javadoc會插入自己的標題,我們給出的標題會與之衝撞。
所有類型的注釋文檔——類、變數和方法——都支援嵌入HTML。

4 @see:引用其他類
所有三種類型的注釋文檔都可包含@see標記,它允許我們引用其他類裡的文檔。對於這個標記,javadoc會產生相應的HTML,將其直接連結到其他文檔。格式如下:

@see 類名
@see 完整類名
@see 完整類名
每一格式都會在產生的文檔裡自動加入一個超連結的“See Also”(參見)條目。注意javadoc不會檢查我們指定的超連結,不會驗證它們是否有效。

5 類文檔標記
隨同嵌入HTML和@see引用,類文檔還可以包括用於版本資訊以及作者姓名的標記。類文檔亦可用於“介面”目的(本書後面會詳細解釋)。

1. @version
格式如下:
@version 版本資訊
其中,“版本資訊”代表任何適合作為版本說明的資料。若在javadoc命令列使用了“-version”標記,就會從產生的HTML文檔裡提取出版本資訊。

2. @author
格式如下:
@author 作者資訊
其中,“作者資訊”包括您的姓名、電子函件地址或者其他任何適宜的資料。若在javadoc命令列使用了“-author”標記,就會專門從產生的HTML文檔裡提取出作者資訊。

可為一系列作者使用多個這樣的標記,但它們必須連續放置。全部作者資訊會一起存入最終HTML代碼的單獨一個段落裡。

6 變數文檔標記
變數文檔只能包括嵌入的HTML以及@see引用。

7 方法文檔標記
除嵌入HTML和@see引用之外,方法還允許使用針對參數、傳回值以及違例的文檔標記。

1. @param
格式如下:
@param 參數名 說明
其中,“參數名”是指參數列表內的標識符,而“說明”代表一些可延續到後續行內的解說文字。一旦遇到一個新文檔標記,就認為前一個說明結束。可使用任意數量的說明,每個參數一個。

2. @return
格式如下:
@return 說明
其中,“說明”是指傳回值的含義。它可延續到後面的行內。

3. @exception
有關“違例”(Exception)的詳細情況,我們會在第9章講述。簡言之,它們是一些特殊的對象,若某個方法失敗,就可將它們“扔出”對象。調用一個方法時,儘管只有一個違例對象出現,但一些特殊的方法也許能產生任意數量的、不同類型的違例。所有這些違例都需要說明。所以,違例標記的格式如下:

@exception 完整類名 說明
其中,“完整類名”明確指定了一個違例類的名字,它是在其他某個地方定義好的。而“說明”(同樣可以延續到下面的行)告訴我們為什麼這種特殊類型的違例會在方法調用中出現。

4. @deprecated
這是Java 1.1的新特性。該標記用於指出一些舊功能已由改進過的新功能取代。該標記的作用是建議使用者不必再使用一種特定的功能,因為未來改版時可能摒棄這一功能。若將一個方法標記為@deprecated,則使用該方法時會收到編譯器的警告。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.