标准的Java编码规范手册
? ? ? ?編碼規范體現出一個開發者的基本素質,良好的編碼規范可以提高團隊編碼的效率,避免很多不必要的問題。今天分享一個標準的Java編碼規范給大家,希望對于大家今后的開發工作帶來幫助。
編碼規范的意義
? ? ? ?在項目開發維護中,編碼規范作為開發規范的一個組成部分,是十分重要和必須的,它不僅僅是為了提高開發效率,也有利于降低后期維護開發的成本。編碼規范的根本目的就是要讓不僅代碼可以一目了然,也可以很容易的理解開發人員所編寫的代碼程的用途和意義。由此,用來減少項目中因為開發維護人員的更替或由于長時間不維護造成的記憶模糊或混亂等情況帶來的對代碼所實現的真正功能的理解困難和歧義。另外也提高了代碼復查效率和效果。
規范實施建議
? ? ? ?不是為了規范而規范,以提高軟件開發質量和效率為目標,輔以IDE等開發工具為保障,逐步改進編碼規范化水平
? ? ? ?對于格式規范、注釋規范等部分規范的要求,可以通過使用eclipse/AndroidStudio自帶的Format方法(快捷鍵:Ctrl+Shift+F)進行自動格式化,可以提高開發效率又符合編碼規范。
? ? ? ?編碼規范文檔本身需要定期不斷的修正和完善,以符合實際開發規范的要求。
格式規范
a)縮進
使用配置文件進行格式化:
配置文件中一個TAB等于4個空格。
b)行長度
每行100字符
注: 使用eclipse自帶的Format方法(快捷鍵:Ctrl+Shift+F)時,需要配置“Maximum line width”設置長度為100
c)聲明
d)聲明變量、常量
一行只聲明一個變量或常量;
在代碼塊的開始處聲明實例變量,不要在首次用到該變量時才聲明【推薦】
e)聲明類
左大括號”{“位于聲明語句同行的末尾,右大括號”}”另起一行;
方法與方法之間以空行分隔
f)語句
可以使用eclipse自帶的Format方法(快捷鍵:Ctrl+Shift+F)時 使用eclipse默認的“Control Statements ”格式化方法進行
注:if語句總是用”{“和”}”括起來
示例
g)空格的使用
等號左右必須各有一個空格:
button = null;
雙目運算符左右必須各有一個空格:
imageWidth = imagePadding + imageSize;
標點符號后面必須跟一個空格
標點符號包括“,”、“;”等,下面列出幾個例子。
一行定義多個變量時,“,”后跟空格:
int i, j;
在for循環中,“;”后跟空格:
for (int i = 0; i < count; ++i)
在有多個入口參數的函數調用中,“,”后跟一個空格:
addContentView(view, params);
h)變量類型的使用
編程的過程中盡量使用接口編程,而少用類編程。
如:
命名規范
通用規則
? ? ? ?命名規范使程序更易讀,從而更易于理解。它們也可以提供一些有關標識符功能的信息,以助于理解代碼,例如,不論它是一個常量,包,還是類。
? ? ? ?包(Packages) 一個唯一包名的前綴總是全部小寫的ASCII字母并且是一個頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166標準所指定的標識國家的英文雙字符代碼。包名的后續部分根據不同機構各自內部的命名規范而不盡相同。這類命名規范可能以特定目錄名的組成來區分部門(department),項目(project),機器(machine),或注冊名(login names)。
如:
? ? ? ?類(Classes) 命名規則:類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量使類名簡潔而富于描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML)
如:
? ? ? ?接口(Interfaces) 命名規則:接口類名以大寫“I”開頭,大小寫規則與類名相似,
如:
? ? ? ?方法(Methods) 方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
如:
? ? ? ?局部變量(Local Variables) 采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。變量名應簡短且富于描述。變量名的選用應該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。臨時變量通常被取名為i,j,k,m和n,它們一般用于整型。c,d,e,它們一般用于字符型,變量名不應以下劃線或美元符號開頭。
如:
? ? ? ?實例變量(Instance Variables) 大小寫規則和類名相似,除了前面需要一個m。
如:
? ? ? ?若實例變量為public類型的則和局部變量采用相同的命名規則。
如:
? ? ? ?常量(Constants [采用stiatc final 修飾]) 類常量的聲明,應該全部大寫,單詞間用下劃線隔開。(類似C語言的宏定義)。
如:
? ? ? ?資源id 資源id全部采用小寫,單詞之間用下劃線隔開。
? ? ? ?注意:這個小寫規范是Android強制執行的,如果出現大寫或者特殊字符工程是不能編譯的。會報錯
如:
備注(Remark)
? ? ? ?所有的標識符名稱要求取有意義的單詞,不能使用myXXXX和button01等風格的名稱。
附加說明
1、從命名中可以直觀看懂其定義和用途,否則必須增加注釋說明;
2、在同一系統內命名必須保持統一;避免出現類似示例中的情況;
示例:項目組id 變量定義:pgid、projectgroupId、idprojectgroup、idProjGroup
3、避免名字過長、命名采用英文縮寫,避免使用漢語拼音【推薦】
組織規范
? ? ? ?引入包規范
? ? ? ?不允許引入類中未使用的包;
? ? ? ?引入包時不能直接引入“.*”,必須明確到引入的類名
? ? ? ?可以通過快捷鍵引入包。Ctrl+Shift+O;
注釋規范
a)通用注釋規則
b)說明
? ? ? ?注釋要精簡并清晰容易理解;
? ? ? ?保持注釋與代碼同步。
? ? ? ?代碼質量不好但能正常運行,或者還沒有實現的代碼用 //TODO:任務 ;
? ? ? ?存在錯誤隱患的代碼用 //FIXME:聲明;
? ? ? ?對于不建議使用(廢棄)的類或者方法,必須在他們的注釋中增加 @deprecated
c)javadoc注釋標簽語法定義說明
? ? ? ?@author 對類的說明 標明開發該類模塊的作者
? ? ? ?@version 對類的說明 標明該類模塊的版本
? ? ? ?@see 對類、屬性、方法的說明 參考轉向,也就是相關主題
? ? ? ?@param 對方法的說明 對方法中某參數的說明
? ? ? ?@return 對方法的說明 對方法返回值的說明
? ? ? ?@exception 對方法的說明 對方法可能拋出的異常進行說
? ? ? ?@deprecated 對類或方法的說明 該類或方法不建議使用
d)類的注釋
目的:簡單概述該類作用
范圍:所有java類,可以不包括javabean
書寫規范:類的注釋必須寫在該類的聲明語法之前。在注釋中要描述該類的描述,創建者,創建日期。
類注釋模板:可以通過eclipse配置(Code Templates 中的 Code 的New Java files)
${filecomment} ${package_declaration}/*** Title: ${project_name}<br>* Description: <br>* Copyright: Copyright (c) ${year} <br>* Create DateTime: ${date} ${time} <br> * @author perry.li*/ ${typecomment} ${type_declaration}類注釋示例:
package cn.sh.sstic.projectmanagement.projectfeasibleschemaeval; /*** Title: mwbas2008<br>* Description: 可行性方案套數數組定義類<br>* Create DateTime: Oct 6, 2008 4:41:03 PM <br> * @author perry.li*/ public class FormUtil {e)方法的注釋
? ? ? ?目的:簡要概述該方法的功能,包括其參數、返回值意義的注釋
? ? ? ?范圍:java類中的各種方法
? ? ? ?注:接口的實現方法的注釋應寫在接口中而不是實現代碼中;
? ? ? ?對自動生成的get/set方法不需要添加注釋;
? ? ? ?如果方法允許null作為參數,或者允許返回值為null,必須在JavaDoc中說明,如果沒有說明,方法的調用者不允許使用null作為參數,并認為返回值是null 安全的。
? ? ? ?書寫規范:方法注釋必須寫在方法定義之前。該注釋包括:方法其功能的簡單 描述,方法的參數、返回值類型、返回值意義簡單的描述。
? ? ? ?模板:對于已定義好的接口的方法,可以直接輸入 /**回車 eclipse可自動生成注釋模板
示例:
/*** 演示方法注釋* @param args* @return* 返回 null 表示沒有找到* @throws Exception*/private String[] demoFunction(String args) throws Exception{return null;}f)失效代碼塊的注釋
? ? ? ?目的:對一塊暫時不啟用的代碼進行注釋。
? ? ? ?注:這里并不是指垃圾、無用的代碼,只是暫時不啟用或暫時不明確的代碼
? ? ? ?書寫規范:失效代碼塊采用塊注釋方法行注釋方法進行標注。
? ? ? ?注:采用注釋塊在 使用eclipse自帶的Format方法(快捷鍵:Ctrl+Shift+F)時需要配置,去掉選中 “Enable block commnet formatting”
示例:
// if (1==1) {// // } else {//// }或者
/* if (1 == 1) {// 如果1與1相等的時候String code1;} else {// 如果1與1不相等的時候String code2;}*/g)分支語句的注釋
目的:簡單描述該分支條件的意義
書寫規范:在分支語句代碼的下一行進行注釋
示例:
if (1==1) {//如果1與1相等的時候code} else {//如果1與1不相等的時候code}h)變量、常量的注釋
? ? ? ?目的:簡單描述該變量、常量的意義。
? ? ? ?書寫規范:變量、常量注釋必須寫在變量、常量定義之前或同一行中,簡單描述其代表的意義。
? ? ? ?注:對自循環所用的變量(i,j,k,)可以不需要注釋。
示例:
如:
@Override public void onCreate(Bundle savedInstanceState) { }異常處理規范
? ? ? ?重新拋出的異常必須保留原來的異常,即throw new NewException(“message”, e); 而不能寫成throw new NewException(“message”),更不能不繼續往上層拋出異常。
? ? ? ?針對重要的可捕獲的業務相關異常,需創建異常處理類,在方法中捕獲到異常后,反饋到用戶界面上,提示用戶【推薦】
補充規范
? ? ? ?代碼在提交版本控制之前,請確保已清除不必要的log調試語句
? ? ? ?明確的垃圾或無用代碼必須刪除
安卓開發高級技術交流QQ群:108721298 歡迎入群
微信公眾號:mobilesafehome
(本公眾號支持投票)
總結
以上是生活随笔為你收集整理的标准的Java编码规范手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity Mono
- 下一篇: HTML入门学习 -- HTML基础知识