Java代碼規(guī)范

第1章 引言

1.1介紹

本文檔以SUN的標準Java代碼規(guī)范為基礎,結(jié)合公司的實際需要,做一些修改和補充,編寫次文檔的目的是規(guī)范公司開發(fā)代碼,增加代碼清晰度,減少bug,降低后期維護成本和代碼審查,養(yǎng)成代碼規(guī)范的習慣,便于開發(fā)人員自身成長。

第2章?標識符命名

注:所有標識符不能出現(xiàn)中文,盡量使用通俗英文,不可拼音和英文混用。

2.1 包名

全部使用小寫字母,單詞間不要用字符隔開

正例:com.axj.batchfile

反例:com.axj.batch_file

2.2 類名

2.2.1 類命名

類名使用駝峰命名,每個自然語義的單詞首字母大寫,其他字母小寫

正例:SendThread

反例:sendThread,Sendthread

2.2.2 類后綴

類名不同的后綴代表不同的類型:


2.2.2

2.3方法名

首字母小寫,后面自然語義的單詞首字母都大寫

正例:closeSession

反例:CloseSession,closesession

動詞在前,名詞在后

正例:closeSession

反例:sessionClose

方法命名格式(方法名要準確表達業(yè)務的含義):


2.3

2.4 變量、參數(shù)名

變量一定要清楚表達什么意思,一般取一些通俗有意義的名字,盡量使用簡短英文單詞。

命名規(guī)則:

1、首字母小寫,后面自然語義的單詞首字母都大寫

2、只能以字母、“_”或“$”符號作為變量名開頭。

3、變量中可包含數(shù)字,但不能以數(shù)字開頭。

4、除了“_”和“$”符號以外,變量中不能包含其他特殊字符。

5、不能用class、int、String、public等java關(guān)鍵字做為變量名。

6、在java中變量名嚴格區(qū)分大小寫,例如:name和Name就是兩個不同的變量

7、靜態(tài)變量和枚舉類型字母全大寫,多個單詞之間用”_”分隔,如:TIME_EVENT

第3章代碼注釋

3.1 注釋分類

注:注釋主要分為2種,實現(xiàn)注釋和文檔注釋。

3.1.1 實現(xiàn)注釋

實現(xiàn)注釋使用/*...*/和//界定,使用/*...*/來進行塊注釋,使用//進行行注釋,位于注釋代碼上一行。

3.1.2文檔注釋

文檔注釋描述Java的類、接口、構(gòu)造器,方法,以及字段(field)。每個文檔注釋都會被置于注釋定界符/**...*/之中,一個注釋對應一個類、接口或成員。該注釋應位于聲明之前,javadoc是j2sdk里面一個非常重要的工具,如果你按照規(guī)范在Java的源代碼里面寫好注釋的話,那么它就可以生成相應的文檔,便于開發(fā)者察看,Myeclipse生成步驟,點擊菜單欄的Project,選擇generate javadoc,下一步即可。

javadoc參數(shù)定義:

@author? 對類的說明 標明開發(fā)該類模塊的作者

@version? 對類的說明 標明該類模塊的版本

@see? ? 對類、屬性、方法的說明 參考轉(zhuǎn)向,也就是相關(guān)主題

@param? ? 對方法的說明 對方法中某參數(shù)的說明

@return? 對方法的說明 對方法返回值的說明

@exception? 對方法的說明 對方法可能拋出的異常進行說明

3.2 注釋條件(必加)

1、類的注釋

2、方法的注釋

3、在代碼復雜處注釋

4、代碼修改處注釋上時間和修改原因

5、全局變量注釋

6、在多重嵌套和循環(huán)邏輯上注釋

7、接口注釋

8、調(diào)用工具類中方法的注釋

3.3 注釋舉例

3.3.1 類注釋

/**

*類功能概述×××××××

*

*@author huwei

*@time 2017-8-20

*/

public class LogicManager {

......

}

3.3.2 方法注釋

/**

* 方法說明×××××××

*

? * @param1 參數(shù)說明

* @param2 參數(shù)說明

? * @return 返回值說明

? * @throws Exception

? */

public boolean executeLogic(int param1, int param2)throws Exception{

......

return true;

}

3.3.3 全局變量、字段、屬性注釋

public class ReadManager {

? /** 全局的計數(shù)變量*/

? private final int count;

? /** 字段/屬性*/

? private String name;

}

3.3.4 代碼域注釋

? ? ? ? ? ? /*----------開始:解析數(shù)據(jù)庫數(shù)據(jù) ------- */

? ? ? ? ? ? //\1拆分數(shù)據(jù)庫數(shù)據(jù)

? ? ? ? ? ? String Row[] = sStr.split("\1");

waitRecord = new WaitRecord[Row.length];

? ? ? ? ? ? /* 循環(huán)存儲對象到List */

for (int i = 0; i < Row.length; i++) {

String Col[] = Row[i].split("\2");

waitRecord[i] = new WaitRecord();

waitRecord[i].waitId = Col[0];

waitRecord[i].userId = Col[1];

waitRecord[i].username = Col[2];

waitRecord[i].longId = Col[3];

? ? ? ? ? ? ? ? waitList.add(waitRecord[i]);

}

? ? ? ? ? ? ? /*----------結(jié)束:解析數(shù)據(jù)庫數(shù)據(jù) ------- */

第五章代碼習慣

5.1 異常拋出

進程和線程可能出現(xiàn)一系列異常,異常的出現(xiàn)如果沒有拋出可能會導致進程死掉或線程崩潰,所以需養(yǎng)成異常捕獲拋出的習慣,避免應用因進程卡住,異常異常捕獲后,需打印異常日志,否則出現(xiàn)異常時不好查找問題。

5.2 減少嵌套

代碼嵌套層太多,會嚴重影響代碼可讀性,處理方法:

1、使用return跳出,減少else使用

2、條件使用邏輯運算符(&& 或 ||等)進行拼接

3、整合成子方法

5.3 判斷字符串相等

1、java中字符串的比較是==比較引用,equals 比較值

我們經(jīng)常習慣性的寫上if(str1==str2),這種寫法在java中可能會帶來問題

例子1:String a="abc";String b="abc",

那么a==b將返回true。因為在java中字符串的值是不可改變的,相同的字符串在內(nèi)存中只會存

一份,所以a和b指向的是同一個對象;

例子2:String a=new String("abc"); String b=new String("abc");

那么a==b將返回false,此時a和b指向不同的對象。

2、用equals方法比較的是字符串的內(nèi)容是否相同

example:String a=new String("abc"); String b=new String("abc"); a.equals(b);將返回true。

通常情況下,為了避免出現(xiàn)上述問題,判斷字符串是否相等使用equals方法,具體的原因得引出常量池概念,這里不做詳細描述

5.4 字符串拼接

拼接字符串盡量使用StringBuffer或者StringBuilder,使用”+”號每次會new一個對象,對空間和性能還是有一定影響的。

5.5 NPE處理

在java開發(fā)最常見的異常就是NPE(java.lang.NullPointerException)異常,需有效的規(guī)避異常,進行null判斷,可能出現(xiàn)null模塊,取集合元素,數(shù)據(jù)截取,方法返回,socket傳輸?shù)臄?shù)據(jù),數(shù)據(jù)庫取值等等...

5.6 日志輸出

平時調(diào)試代碼或輸出日志習慣使用System.out.println(),system.out都寫入到一個文件里去了,對一個文件的讀寫就會排隊寫,而且syso在當前線程,必須寫完才繼續(xù)下面的程序。 如果使用log工具,你的日志會發(fā)散在多個日志文件上??梢钥刂迫罩臼欠褫敵觯襩og工具只是通知要寫日志,而不必等日志寫完。

————————————————

原文鏈接:https://blog.csdn.net/u013050593/java/article/details/77750807

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容