1. 程式人生 > >Java命名、註釋規範

Java命名、註釋規範

一、命名規範

1、 專案名全部小寫

2、 包名全部小寫

3、 類名首字母大寫,如果類名由多個單片語成,每個單詞的首字母都要大寫。

如:public class MyFirstClass{}

4、 變數名、方法名首字母小寫,如果名稱由多個單片語成,每個單詞的首字母都要大寫。

如:int index=0;

5、 常量名全部大寫

如:public static final String GAME_COLOR=”RED”;

6、所有命名規則必須遵循以下規則:

1)、名稱只能由字母、數字、下劃線、$符號組成

2)、不能以數字開頭

3)、名稱不能使用JAVA中的關鍵字。

4)、堅決不允許出現中文及拼音命名。

二、註釋規範


好的程式碼規範是一個程式設計師的基本修煉,好的程式碼註釋更能體現一個程式設計師的思維邏輯,雖然程式碼是用來給機器執行的,我們只要能寫出能讓編譯器執行的程式碼就行了,但是如果沒有好的編碼規範,到專案後期,加入開發的人員逐漸增多時,每個人的編碼風格都不一樣,這就會讓專案維護者很難維護,所以開始就要制定一些好的規範來讓大家遵守,這樣才能寫出可維護,健壯的專案,這就是接下來要做的事情。第一節從要從程式碼註釋這一塊說起,包含: 版權註釋、類註釋(Class)、建構函式註釋(Constructor)、方法註釋(Methods)、程式碼塊註釋(Block)、單句註釋、欄位名註釋

,然後分別為eclipse、IDEA建立註釋模組等。


二、約定


下面就是一些常見的註釋示例:


1、版權註釋

版權註釋主要用來宣告公司的一些基本資訊等:


   
  1. /**
  2. * projectName: xxx
  3. * fileName: Tk.java
  4. * packageName: xxxx
  5. * date: 2017年12月18日下午12:28:39
  6. * copyright(c) 2017-2020 xxx公司
  7. */



2、類註釋(Class)



類註釋(Class)主要用來宣告該類用來做什麼,以及建立者、建立日期版本、包名等一些資訊:




   
  1. /
  2. * @version: V1.0
  3. * @author: fendo
  4. * @className: user
  5. * @packageName: user
  6. * @description: 這是使用者類
  7. * @data: 2017-07-28 12:20
  8. /



3、建構函式註釋(Constructor)



建構函式註釋(Constructor)主要用來宣告該類的建構函式、入參等資訊:





   
  1. **
  2. * @description: 建構函式
  3. * @param: [sid, pid]
  4. */




4、方法註釋(Methods)



方法註釋(Methods)主要用來宣告該類的作用、入參、返回值、異常等資訊:




   
  1. /**
  2. * @author: fendo
  3. * @methodsName: addUser
  4. * @description: 新增一個使用者
  5. * @param: xxxx
  6. * @return: String
  7. * @throws:
  8. */


5、程式碼塊註釋(Block)





   
  1. /**
  2. * 例項化一個使用者
  3. * xxxxxxx
  4. */
  5. User user=new User();



6、單句註釋



User user=new User(); //例項化一個使用者
  


7、欄位名註釋




   
  1. /**
  2. * 使用者名稱
  3. */
  4. public String name;

或者使用如下格式:




   
  1. / 使用者名稱/
  2. public String name;



三、IDE模板




接下來就是分別在Eclipse和IDEA中實現上面的註釋,然後分別生成模板:




3.1、Eclipse程式碼註釋




在Eclipse中可以通過CodeTemplates進行設定,具體步驟如下: Window->Preference->Java->Code Style->Code Template 







其中有兩類一類是Comments、主要是類中的一些通用模板:








1.檔案(Files)註釋標籤:




設定版權資訊:




   
  1. /**
  2. * projectName: ${project_name}
  3. * fileName: ${file_name}
  4. * packageName: ${package_name}
  5. * date: \({date}\){time}
  6. * copyright(c) 2017-2020 xxx公司
  7. */





注意: 要打上勾!!



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




   
  1. /**
  2. * @title: ${file_name}
  3. * @package ${package_name}
  4. * @description: ${todo}
  5. * @author: fendo
  6. * @date: ${date} ${time}
  7. * @version: V1.0
  8. */





3.欄位(Fields)註釋標籤:




   
  1. /**
  2. * @Fields ${field} : ${todo}(用一句話描述這個變量表示什麼)
  3. */


4.建構函式(Constructors)標籤:




   
  1. /**
  2. * @title: ${enclosing_type}
  3. * @description: ${todo}(這裡用一句話描述這個方法的作用)
  4. * @param: ${tags}
  5. * @throws:
  6. /


5.方法(Methods)標籤:




    
  1. /
  2. @title: ${enclosing_method}
  3. @description: ${todo}
  4. @author: fendo
  5. @date: ${date} \({time}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> *\){tags}
  6. @throws:
  7. /


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




   
  1. /
  2. @title: ${enclosing_method}
  3. * @description: ${todo}
  4. * ${tags}
  5. * ${see_to_overridden}
  6. */


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




   
  1. /**
  2. * ${tags}
  3. * ${see_to_target}
  4. */


8.Getter方法標籤:




   
  1. /**
  2. * @title: ${enclosing_method}
  3. * @description: ${todo}
  4. * @return: ${field_type}
  5. */


9.Setter方法標籤:




   
  1. /**
  2. * @title: ${enclosing_method}
  3. * @description: ${todo}
  4. * @return: ${field_type}
  5. */


另一類是程式碼模板如下:





由於基本的在上面的已經設定好了,所以這裡也不需要設定什麼,然後就是把這個模板匯出來,分發給各開發人員,讓他們導進來就行了。








完整的模板如下:




   
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <templates> <template autoinsert="false" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment">/**
  2. * @title: ${enclosing_method}
  3. * @description: ${todo}
  4. * @return: ${field_type}
  5. */ </template> <template autoinsert="false" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment">/**
  6. * @title: ${enclosing_type}
  7. * @description: ${todo}
  8. * @param: \({tags} </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> * @throws </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> */ <span class="hljs-tag">&lt;/<span class="hljs-name">template</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">template</span> <span class="hljs-attr">autoinsert</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">context</span>=<span class="hljs-string">"filecomment_context"</span> <span class="hljs-attr">deleted</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">description</span>=<span class="hljs-string">"Comment for created Java files"</span> <span class="hljs-attr">enabled</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"org.eclipse.jdt.ui.text.codetemplates.filecomment"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"filecomment"</span>&gt;</span>/** </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> * projectName:\){project_name}
  9. * fileName: \({file_name} </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> * packageName:\){package_name}
  10. * date: \({date}\){time}
  11. * copyright(c) 2017-2020 xxx公司
  12. */ </template> <template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name="typecomment">/**
  13. * @title: ${file_name}
  14. * @package ${package_name}
  15. * @description: ${todo}
  16. * @author: fendo
  17. * @date: ${date} ${time}
  18. * @version: V1.0
  19. /</template><template autoinsert="false" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment">/
  20. @title ${enclosing_method}
  21. @description: ${todo}
  22. @author: fendo
  23. @date: ${date} \({time}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> *\){tags}
  24. @throws
  25. / </template><template autoinsert="false" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment">/
  26. @title: ${enclosing_method}
  27. * @description: ${todo}
  28. * ${tags}
  29. * ${see_to_overridden}
  30. */ </template> <template autoinsert="false" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment">/**
  31. * @title: ${enclosing_method}
  32. * @description: ${todo}
  33. * @return: ${field_type}
  34. */ </template> <template autoinsert="false" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment">/**
  35. * @Fields ${field} : ${todo}
  36. */ </template> <template autoinsert="false" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment">/
  37. * ${tags}
  38. * ${see_to_target}
  39. / </template></templates>



3.2、IDEA程式碼註釋




idea有兩種快捷方式,一個是live templates,一個是file and code templates。




3.2.1、file and code templates




IDEA的code templates僅限於類檔案頭和所有檔案頭。配置如下圖:




File -- Settings -- Editor -- Code Style -- File and Code Templates

 




 


模板如下,只能實現類註釋,方法註釋只能用live templates




   
  1. /
  2. * projectName: ${PROJECT_NAME}
  3. * fileName: ${NAME}.java
  4. * packageName: ${PACKAGE_NAME}
  5. * date: \({YEAR}-\){MONTH}-${DAY} \({TIME}</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> * copyright(c) 2017-2020 xxx公司 </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> */ </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">#if (\){PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
  6. /
  7. @version: V1.0
  8. * @author: fendo
  9. * @className: ${NAME}
  10. * @packageName: ${PACKAGE_NAME}
  11. * @description: ${DESCRIPTION}
  12. * @data: \({YEAR}-\){MONTH}-${DAY} ${TIME}
  13. /
  14. public class ${NAME} {
  15. }



3.2.1、live templates




Live Template用中文應該叫做熱載入模板。它的原理就是配置一些常用程式碼字母縮寫,在輸入簡寫時可以出現你預製的模板內容,使得開發效率大大提高。




在配置當中找到Live Template,右邊加號先新增一個TemplateGroup






選中該分組再點選加號新增一個Live Template.Abbreviation中填寫命令,Description填寫描述,Template text填寫你的配置模板。








程式碼註釋模板如下:




   
  1. /**
  2. * @title: \(file_name\)
  3. * @package \(package_name\)
  4. * @description:
  5. * @author: \(author\)
  6. * @date: \(date\) \(time\)
  7. * @version: V1.0
  8. */




注意:

這裡的變數是$$括起來的!!


然後點選








選擇Everywhere








然後選擇JAVA








最後點選右下角的Edit variables 按鈕,然後彈出一個視窗,如下:  








注意:


預設值需要用""括起來!!




內建函式詳細請參考:https://www.jetbrains.com/help/idea/live-template-variables.html




方法註釋如下:




   
  1. 相關推薦

    Java命名註釋規範

    一、命名規範 1、 專案名全部小寫 2、 包名全部小寫 3、 類名首字母大寫,如果類名由多個單片語成,每個單詞的首字母都要大寫。 如:public class MyFirstClass{} 4、 變數名、方法名首字母小寫,如果名稱由多個單片語成,每個單詞的首字母都要大寫。 如:int index=

    java文件註釋規範:javadoc標籤(二)

    javadoc標籤必須從一行的開頭(在任何前導空格和可選的星號之後)開始,否則將被視為普通文字。 按照慣例,具有相同名稱的標籤被組合在一起(標籤大小寫敏感)。 例如,將所有@see標記放在一起。標籤可以分為: 塊標籤:只能放在主要描述部分後面的標籤部分。 塊標籤的格式為:@

    java中的註釋規範,生成javadoc

    java中的註釋,大家應該已經很熟悉了。 文件註釋可以用於對類、屬性、方法等進行說明。寫文件註釋時除了需要使用 /** .... */ 限定之外,還需要注意註釋內部的一些細節問題。 1文件和文件註釋的格式化 生成的文件是 HTML 格式,而這些 HTML 格式

    Java&Android程式碼註釋規範

    一、註釋及簡介     1、鄙人寫的一些程式碼中,雖說有註釋,但都是一些不符合規則的註釋,即便拿出來查閱,也要花很一些時間才能搞懂程式的流程。為了良好的程式設計風格,我特意學習了java的文件註釋,也分享給大家,良好的程式設計風格確實很重要,不可忽略···     2、說一

    JAVA開發之 12-JAVA中的註釋規範

    JAVA註釋方法及格式 1、單行(single-line)–短註釋://…… 單獨行註釋:在程式碼中單起一行註釋, 註釋前最好有一行空行,並與其後的程式碼具有一樣的縮排層級。如果單行無法完成,則應採用塊註釋。 註釋格式:/* 註釋內容 */ 行頭註釋:在

    Java命名規範註釋規範

    在面向物件程式設計中,對於類,物件,方法,變數等方面的命名是非常有技巧的。比如,大小寫的區分,使用不同字母開頭等等。但究其本,追其源,在為一個資源其名稱時 候,應該本著描述性以及唯一性這兩大特徵來命名

    JAVA編程規範-註釋規範

    應用 進行 ava line 而不是 信息 font 意義 控制 1.【強制】類、類屬性、類方法的註釋必須使用 Javadoc規範,使用/**內容*/格式,不得使用//xxx方式。說明:在 IDE編輯窗口中,Javadoc方式會提示相關註釋,生成 Javadoc可以正確輸出

    Java命名規範

    Ltd. 數字 背景 方法名 類註釋 ava oid 命名 bgcolor 一、命名規範 1、 項目名全部小寫 2、 包名全部小寫 3、 類名首字母大寫,如果類名由多個單詞組成,每個單詞的首字母都要大寫。 如:public class MyFirstClass{} 4、 變

    MySQL命名設計及使用規範《MySQL命名設計及使用規範

    lin 布爾 _id htm 表的操作 最終 新華 alter 通配 數據庫環境 dev:開發環境,開發可讀寫,可修改表結構。開發人員可以修改表結構,可以隨意修改其中的數據但是需要保證不影響其他開發同事。 qa:測試環境,開發可讀寫,開發人員可以通過工具修改表結構。 si

    Java 命名規範

    bgcolor OS str 創建 內部 命名 錯誤 不能 copy 一、命名規範 1、 項目名全部小寫 2、 包名全部小寫 3、 類名首字母大寫,如果類名由多個單詞組成,每個單詞的首字母都要大寫。 如:public class MyFirstClass{} 4、 變量名、

    Python語法特點如註釋規則代碼縮進編碼規範

    process 中文編碼 使用 ref 代碼縮進 編寫 類型 python size 在Python中,通常包括3種類型的註釋,分別是單行註釋、多行註釋和中文編碼聲明註釋。單行註釋在Python中,使用“#”作為單行註釋的符號。從符號“#”開始直到換行為止,“#”後面所有的

    Java基礎學習 一 (字符集識別符號關鍵字註釋變數基本資料型別非基本資料型別高精度數字)

    一 字符集:        java採用Unicode字符集 包含65535個字元 二 識別符號:         由字母、數字、下劃線及美元符號等組成的一個字元序列,用來標識變數、方法名、類名、介面名等

    Idea-Java程式碼註釋規範

      IDEA自帶的註釋模板不是太好用,我本人到網上搜集了很多資料系統的整理了一下製作了一份比較完整的模板來分享給大家(如果嫌配置繁瑣,可以在本頁面最下方下載jar包,匯入idea,就可以了)。 一、首先我們來設定IDEA中類的模板:(IDEA中在建立類時會自動給添加註釋)

    Java基礎——註釋規範

    一、註釋格式分類:   1、單行(single-line)註釋://……   2、塊(block)註釋:/*……*/   3、文件註釋:/**……*/   javadoc有如下:      二、加註釋的場景:   1. 基本註釋(必須加)    (a)類(介面)的註釋    (b)建

    Android開發規範Java命名規範

    文章目錄 類名 方法名 變數名 類名 採用大駝峰命名法。 命名規則:功能+型別(Activity、Adapter、Service等)。 舉例: activity類,命名以Activity為字尾

    Java建立重新命名刪除檔案和資料夾

    package my.file;   import java.io.File;   import java.io.FileOutputStream;   import java.io

    java命名規範及Android命名規範

    寫了一些程式碼,越發覺得命名規範對開發有著重要的作用!所以這裡根據網上的建議,總結了一些命名規範。下面是整個文章的目錄(內容如有哪些不合理,望指出!) java命名規範:常用(包、類、介面、方法、變數、常量)參考文章:【點我】 Android開發命名規範(基於java命名規範):

    學習日誌1---運用匈牙利命名法的命名規範,以及註釋規範

    記錄下來方便查閱,用於C++程式設計 命名規範 1.變數命名 字首 表示型別 例子 a 陣列 aScore[50] b 波爾變數 bFlag c 字元變數 cSex i或n 整形變數 iNum,

    Java語言基礎(一)---關鍵字識別符號註釋常量變數運算子

    Java語言基礎組成:關鍵字、識別符號、註釋、常量和變數、運算子、語句、函式、陣列 一. 關鍵字 【注】關鍵字的所有的字母都是小寫  1. 用於定義資料型別的關鍵字 基本資料型別 數值型 整數:byte(位元組) sho

    Java之路:識別符號命名規則與規範

    識別符號 1、定義 在程式設計過程中,經常需要在程式中定義一些符號來標記一些名稱,如包名、類名、方法名、變數名等,這些符號被稱為識別符號。 2、識別符號命名規則 命名規則 識別符號可以由任意順序的大小寫字母、數字、下劃線(_)和美元符號