雖然軟件工程中把詳細設計作為軟件項目的一個重要的階段,但在實踐中往往沒有得到落實。並不是這個階段不重要,而是實施有很大的困難,因為軟件需求是天生的易動症患者,好不容易詳細設計出來後,需求已和當初的版本大相徑庭,而花費巨大,精雕細琢的詳細設計已變成昨日黃花了。另一方面,有一些功能實現往往要等到真正編碼時才能想到更好的方法,畢竟設計時是"憑空想象",而編碼時才是"實踐操作",所以在編碼時對原設計進行調整常常在所難免。
詳細設計文檔是源代碼實現上的描述,但在物理上則是和源代碼文件分離的,兩者間的一致性很容易被打破,維持兩者一致性代價常常是項目正常周期無法承受的。各種"自文檔"或"直接文檔"的技術應運而生,Javadoc就是Java的自文檔技術,即通過"寄生"在源代碼文件中的注釋信息產生幫助文檔,這種幫助文檔本身也就是詳細設計文檔。由於程序代碼和注釋信息在同一個文件中,在更改程序時相應調整注釋則是舉手之勞的事,兩者間的一致性很容易得到保障。
作為一名Java程序員,想必多少看過JDK的API幫助文檔,JBuilder自帶的JDK1.4的幫助文檔位於<JBuilder 安裝目錄>/doc/jdk_docs.jar,它包含了JDK的Javadoc文檔,你可以通過諸如winRAR等解壓軟件將jdk_doc.jar解壓到某個目錄下,解壓後jdk_docs/java/api目錄中的文檔就是JDK的Javadoc文檔。雙擊打開目錄下的index.html文件,你將看到如下的頁面
圖1 JDK的Javadoc文檔
網頁分為三個幀,左上角的幀是包的列表,左下角的幀是包中類的列表,而右邊主窗口幀是類的API說明頁面。
類API說明頁面頂部有一個導航條,方便鏈接到一些常用的頁面,這些常見的頁面包括:
·Overview:所有包的說明列表,每個包對應表中一行說明。
·Package:包中所有類或接口的說明列表,每個類或接口對應表中一行說明。
·Class:標明為當前類,其上並無鏈接。
·Use:類的所有關聯類:包括繼承關系,依賴關系,關聯關系等。
·Tree:以層次結構列出包中類繼層級關系,通過這個列表,可以對類探本溯源,下面是java.applet包Applet類的繼承用實現樹。
圖2 以層次結構列出包中的類
·Deprecated:所有過期的類、接口、值域、方法、構造函數。
·Index:索引頁面,將JDK中所有的類、接口、常量、方法都以字母順序進行索引,借此頁面可以快速定位到所需的幫助內容,其頁面如下:
圖3 以索引方式組織
·Help:關於如何使用Javadoc文檔的幫助信息,你可以通過這個文檔了解更多使用Javadoc的方法。
每一個類和接口都對應一個Javadoc文檔,類和接口的Javadoc文檔所占比例最大、內容最豐富,它是使用這些類和接口的直接參考文檔。由於類比接口包含了更多的內容,所以我們僅介紹類的文檔。一個典型的類Javadoc文檔包括以下的內容:
·導航條:在文檔頭部和尾部都有導航條,方便快速鏈接到常用的頁面,提供了上一頁和下一頁的鏈接,並且提供了在定位到本頁中不同部分的錨鏈接。
·類的繼承關系:類的繼承樹,類實現的接口以及類的子類。通過這些信息可以從縱向了解類的關聯關系。
·類的簡要說明:類的簡要描述信息,描述類的功用。
·內部類的列表:列出類中所定義的內部類。
·類值域摘要:所有的protected和public的值域,每個值域對應一句說明。
·類構造方法摘要:所有的protected和public的成員構造方法,每個構造方法對應一句說明。
·類成員方法摘要:所有的protected和public的成員方法,每個方法對應一句說明。
·類繼承方法列表:承繼父類方法的列表。
·類值域詳細說明:protected和public的值域的詳細說明及關聯鏈接。
·類構造方法詳細說明:protected和public的構造方法的詳細說明,方法入參、返回值、拋出異常說明及關聯鏈接。
·類成員方法詳細說明:protected和public的成員方法的詳細說明,方法入參、返回值、拋出異常說明及關聯內容的鏈接。
JBuilder提供了許多支持Javadoc的功能,這些功能包括:
·可通過快捷鍵創建類、接口、方法、值域及構造函數的注釋結構體,注釋結構體中包含了和源碼對應的標簽。
·誘導錄入Javadoc標簽的JavadocInsight。
·可通過快捷鍵添加@todo標簽並可以浏覽這些標簽。
·報告並修復和源代碼沖突的Javadoc注釋。
·通過Archiver Builder創建整個工程的Javadoc文檔。
·創建自定義的Javadoc標簽
·用Doc浏覽器浏覽程序文件的Javadoc文檔