java代碼注釋規范


java代碼注釋規范

一、規范存在的意義

    應用編碼規范對於軟件本身和軟件開發人員而言尤為重要,有以下幾個原因:

    1、好的編碼規范可以盡可能的減少一個軟件的維護成本 , 並且幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發人員來維護;

    2、好的編碼規范可以改善軟件的可讀性,可以讓開發人員盡快而徹底地理解新的代碼;

    3、好的編碼規范可以最大限度的提高團隊開發的合作效率;

    4、長期的規范性編碼還可以讓開發人員養成好的編碼習慣,甚至鍛煉出更加嚴謹的思維;

二、命名規范

     1、一般概念

        1、盡量使用完整的英文描述符

        2、采用適用於相關領域的術語

        3、采用大小寫混合使名字可讀

        4、盡量少用縮寫,但如果用了,必須符合整個工程中的統一定義
       
        5、避免使用長的名字(小於 15 個字母為正常選擇)

        6、避免使用類似的名字,或者僅僅是大小寫不同的名字

        7、避免使用下划線(除靜態常量等)

      2、標識符類型說明

        1、包( Package )的命名
            Package 的名字應該采用完整的英文描述符,都是由一個小寫單詞組成。並且包名的前綴總是一個頂級域名,
            通常是 com、edu、gov、mil、net、org 等;
            如: com.yjhmily.test

        2、類( Class )的命名
            類名應該是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量保證類名簡潔而富於描述。
            使用完整單詞,避免縮寫詞 ( 除非工程內有統一縮寫規范或該縮寫詞被更廣泛使用,像 URL , HTML)
        如: FileDescription

        3、接口( Interface )的命名
            基本與 Class 的命名規范類似。在滿足 Classd 命名規則的基礎之上,保證開頭第一個字母為 ”I”,
            便於與普通的 Class區別開。其實現類名稱取接口名的第二個字母到最后,且滿足類名的命名規范;
        如: IMenuEngine

        4、枚舉( Enum )的命名
            基本與 Class 的命名規范類似。在滿足 Classd 命名規則的基礎之上,保證開頭第一個字母為 ”E” ,
            便於與普通的 Class區別開。
        如: EUserRole

        5、異常( Exception )的命名
            異常( Exception ) 通常采用字母 e 表示異常,對於自定義的異常類,其后綴必須為 Exception
        如: BusinessException

        6、方法( Method )的命名
            方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
            方法名盡可能的描述出該方法的動作行為。返回類型為 Boolean 值的方法一般由“ is ”或“ has ”來開頭
        如: getCurrentUser() 、 addUser() 、 hasAuthority()

        7、參數( Param )的命名
            第一個單詞的首字母小寫,其后單詞的首字母大寫。參數量名不允許以下划線或美元符號開頭,
            雖然這在語法上是允許的。參數名應簡短且富於描述。
        如: public UserContext getLoginUser(String loginName);
       
        8、常量字段 ( Constants )的命名
            靜態常量字段( static final ) 全部采用大寫字母,單詞之間用下划線分隔;
        如: public static final Long FEEDBACK;
        public static Long USER_STATUS;

  三、注釋規范

        一個很好的可遵循的有關注釋的經驗法則是:

            問問你自己,你如果從未見過這段代碼,要在合理的時間內有效地明白這段代碼,你需要一些什么信息???

         1、一般概念

            1、注釋應該增加代碼的清晰度

            2、保持注釋的簡潔

            3、在寫代碼之前或同時寫注釋

            4、注釋出為什么做了一些事,而不僅僅是做了什么

         2、注釋哪些部分

            1、Java 文件:必須寫明版權信息以及該文件的創建時間和作者;

            2、類:類的目的、即類所完成的功能,以及該類創建的時間和作者名稱;多人一次編輯或修改同一個類時,
                應在作者名稱處出現多人的名稱;

            3、接口: 在滿足類注釋的基礎之上,接口注釋應該包含設置接口的目的、它應如何被使用以及如何不被使用。
                在接口注釋清楚的前提下對應的實現類可以不加注釋;

            4、方法注釋: 對於設置 (Set 方法 ) 與獲取 (Get 方法 ) 成員的方法,在成員變量已有說明的情況下,
                可以不加注釋;普通成員方法要求說明完成什么功能,參數含義是什么且返回值什么;另外方法的創建
                時間必須注釋清楚,為將來的維護和閱讀提供寶貴線索;

            5、方法內部注釋: 控制結構,代碼做了些什么以及為什么這樣做,處理順序等,特別是復雜的邏輯處理部分,
                要盡可能的給出詳細的注釋;

            6、參數: 參數含義、及其它任何約束或前提條件;

            7、屬性: 字段描述;

            8、局部 ( 中間 ) 變量: 無特別意義的情況下不加注釋;

         3、注釋格式

            遵循工程規定的統一注釋格式,一般情況下會以 codetemplates.xml 格式的文件導入 IDE(Eclipse)
            或者用Eclipse默認的;

四、代碼格式規范

        遵循工程規定的統一代碼格式,一般情況下直接使用 IDE(Eclipse) 自帶的默認代碼格式對代碼進行格式化;
1、單行(single-line)--短注釋://……   
單獨行注釋:在代碼中單起一行注釋, 注釋前最好有一行空行,並與其后的代碼具有一樣的縮進層級。如果單行無法完成,則應采用塊注釋。
注釋格式:
行頭注釋:在代碼行的開頭進行注釋。主要為了使該行代碼失去意義。
注釋格式:// 注釋內容
行尾注釋:尾端(trailing)--極短的注釋,在代碼行的行尾進行注釋。一般與代碼行后空8(至少4)個格,所有注釋必須對齊。
注釋格式:代碼 + 8(至少4)個空格 + // 注釋內容
2、塊(block)--塊注釋:
注釋若干行,通常用於提供文件、方法、數據結構等的意義與用途的說明,或者算法的描述。一般位於一個文件或者一個方法的前面,起到引導的作用,也可以根據需要放在合適的位置。這種域注釋不會出現在HTML報告中。注釋格式通常寫成:

3、文檔注釋:
注釋若干行,並寫入javadoc文檔。每個文檔注釋都會被置於注釋定界符
之中,注釋文檔將用來生成HTML格式的代碼報告,所以注釋文
檔必須書寫在類、域、構造函數、方法,以及字段(field)定義之前。注釋文檔由兩部分組成——描述、塊標記。注釋文檔的格式如下:

public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    doPost(request, response);
}
前兩行為描述,描述完畢后,由@符號起頭為塊標記注釋。更多有關文檔注
釋和javadoc的詳細資料,參見javadoc的主頁:  http://java.sun.com/javadoc/index.html
4、javadoc注釋標簽語法
@author    對類的說明 標明開發該類模塊的作者
@version   對類的說明 標明該類模塊的版本
@see      對類、屬性、方法的說明 參考轉向,也就是相關主題
@param    對方法的說明 對方法中某參數的說明
@return    對方法的說明 對方法返回值的說明
@exception  對方法的說明 對方法可能拋出的異常進行說明
六、JAVA注釋具體實現
1、源文件注釋
源文件注釋采用 ,在每個源文件的頭部要有必要的注釋信息,包括:文件名;文件編號;版本號;作者;創建時間;文件描述包括本文件歷史修改記錄等。中文注釋模版:

2、類(模塊)注釋:
類(模塊)注釋采用 ,在每個類(模塊)的頭部要有必要的注釋信息,包括:工程名;類(模塊)編號;命名空間;類可以運行的JDK版本;版本號;作者;創建時間;類(模塊)功能描述(如功能、主要算法、內部各部分之間的關系、該類與其類的關系等,必要時還要有一些如特別的軟硬件要求等說明);主要函數或過程清單及本類(模塊)歷史修改記錄等。
英文注釋模版:

如果模塊只進行部分少量代碼的修改時,則每次修改須添加以下注釋:
//Rewriter
//Rewrite Date:<修改日期:格式YYYY-MM-DD> Start1:

//End1:
將原代碼內容注釋掉,然后添加新代碼使用以下注釋:
//Added by
//Add date:<添加日期,格式:YYYY-MM-DD> Start2:
//End2:
如果模塊輸入輸出參數或功能結構有較大修改,則每次修改必須添加以下
注釋:
//Log ID:
//Depiction:<對此修改的描述>
//Writer:修改者中文名
//Rewrite Date:<模塊修改日期,格式:YYYY-MM-DD>
2、接口注釋:
接口注釋采用 ,在滿足類注釋的基礎之上,接口注釋應該包含描述接口的目的、它應如何被使用以及如何不被使用,塊標記部分必須注明作者和版本。在接口注釋清楚的前提下對應的實現類可以不加注釋。
3、構造函數注釋:
構造函數注釋采用 ,描述部分注明構造函數的作用,不一定有塊標記部分。
注釋模版一:

注釋模版二:

4、函數注釋:
函數注釋采用 ,在每個函數或者過程的前面要有必要的注釋信息,包括:函數或過程名稱;功能描述;輸入、輸出及返回值說明;調用關系及被調用關系說明等。函數注釋里面可以不出現版本號(@version)。
注釋模版一:

注釋模版二:

5、方法注釋:
方法注釋采用 ,對於設置 (Set 方法 ) 與獲取 (Get 方法 ) 成員的方法,在成員變量已有說明的情況下,可以不加注釋;普通成員方法要求說明完成什么功能,參數含義是什么且返回值什么;另外方法的創建時間必須注釋清楚,為將來的維護和閱讀提供寶貴線索。
6、方法內部注釋:
控制結構,代碼做了些什么以及為什么這樣做,處理順序等,特別是復雜的邏輯處理部分,要盡可能的給出詳細的注釋。
7、 全局變量注釋:
要有較詳細的注釋,包括對其功能、取值范圍、哪些函數或者過程存取以及存取時注意事項等的說明。
8、局部(中間)變量注釋:
主要變量必須有注釋,無特別意義的情況下可以不加注釋。
9、實參/參數注釋:
參數含義、及其它任何約束或前提條件。
10、字段/屬性注釋: 字段描述,屬性說明。
11、常量:常量通常具有一定的實際意義,要定義相應說明。
 -------------華麗的分割線--------------------------------------------
myeclipse的注釋相關
1.對java文件的自動注釋
Window->Preference->Java -> Code Style -> Code Templates
files:新建文件時的注釋
Types:類的注視
Field:變量的注釋
Constructors:構造函數的注釋
methods:一般方法的注釋
可以在里edit一些固定的格式或變量 其中user默認取操作系統的名稱,可以寫死。 日期格式俺想知道怎么改成yyyy-mm-dd
2.對JSP文件的注釋
Window->Preference-myeclipse-editors-JSP-JSP TEMPLATES
 3.在java中用的一些快捷 例:sysout
Window->Preference-java-editor-templates
可以自己寫一些參數~例如 user ---zhongjb
五、其他規范

        JSP 文件命名
            采用完整的英文描述說明 JSP 所完成的功能,盡可能包括一個生動的動詞,第一個字母小寫,
        如: viewMessage.jsp 、editUser.jsp 等。

六、工程特有命名規范

          1、持久層

            1、 Hibernate 映射文件及實體
                與數據庫表名稱完全對應;
                如: Advertisement.hbm.xml 、 Advertisement.java

            2、數據訪問 DAO
                DAO 接口和實現類名稱必須完全符合正常接口和實現類的命名規則,且最后以 ”DAO” 結尾
                DAO 內的數據訪問方法必須足夠抽象的描述出對數據庫的基本 CRUD 操作;
                如: ICrossAdDAO( 接口 ) 、 CrossAdDAO( 實現類 )
           
            3、各種操作數據庫的 HQL 配置文件
                HQL 文件的個數原則上與系統的 Services 層的服務個數相等,且以服務名稱命名 HQL 文件;
                如: resource.hbm.xml

        2、服務層

            1、服務接口和實現
                服務接口和實現類必須完全符合正常接口和實現類的命名規則;以工程定義的服務名為主體,
                並統一以 ”Serv” 結尾
                如: IResourceServ( 服務接口 ) 、 ResourceServ( 接口實現類 )

            2、服務接口方法
                方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
           方法名盡可能的描述出該方法的動作行為。
                返回類型為 Boolean 值:用“ is ”或“ has ”來開頭
                得到某數據: get+ 數據描述名詞復數 + 數據類型;
                得到所有數據: get+All+ 數據描述名詞復數 + 數據類型;
                通過 XXX 得到 / 查詢某數據: get/query+ 數據描述名詞復數 + 數據類型 +By+ 條件;
                添加某數據: save/add+ 數據描述名詞 ()
                更新某數據: save/update+ 數據描述名詞;
                刪除某數據: delete/remove+ 數據描述名詞;

            3、業務對象
                業務名稱 +BO

            4、查詢參數對象
                凡是繼承 Abst***QuerySpec 的查詢參數類全部滿足以下規則:
                Query+ 所要查詢的數據描述名詞 +Spec
                作為參數傳入時,參數名必須為:所要查詢的數據描述名詞 +Spec
                如: QueryProgramSpec

        3、MVC 層           

            1、Action 控制層
                Action 類名:功能模塊名稱 +Action ;
                Actoin 方法名稱盡可能的描述出頁面遷移的去向
                如: LoginAction( 登錄用 action) , toWelcome( 轉向歡迎頁的 action 方法 )

            2、資源文件
                系統全局資源文件: globalMessages_+ 字符編碼類型 +.properties
                功能模塊內部的資源文件: package.properties

         4、Spring 配置文件

            1、Action 相關配置文件
                文件目錄: WebRoot/WEB-INF/spring/action/ 功能模塊名稱 +_ApplicationContext.xml

            2、Services 相關配置文件
                文件目錄: WebRoot/WEB-INF/spring/services/Services_ApplicationContext.xml

            3、全局性配置文件
                文件目錄: WebRoot/WEB-INF/spring/工程名+_ApplicationContext.xml

        5、JSP 文件
            采用完整的英文描述說明 JSP 所


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM