第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.3方法名
首字母小寫,后面自然語義的單詞首字母都大寫
正例:closeSession
反例:CloseSession,closesession
動詞在前,名詞在后
正例:closeSession
反例:sessionClose
方法命名格式(方法名要準確表達業(yè)務的含義):

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