基本命名規范
包命名
包名按照域名的范圍從大到小逐步列出恰好和Internet上的域名命名規則相反
由一組以連接的標識符構成通常第一個標識符為符合網絡域名的兩個或者三個英文小寫字母
People TestPage XMLExample
類接口命名
類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫如果類名稱由多個單詞組成則每個單詞的首字母均應為大寫例如TestPage如果類名稱中包含單詞縮寫則這個所寫詞的每個字母均應大寫如XMLExample還有一點命名技巧就是由於類是設計用來代表對象的所以在命名類時應盡量選擇名詞
People TestPage XMLExample
方法名
方法的名字的第一個單詞應以小寫字母作為開頭後面的單詞則用大寫字母開頭可以為動詞或動詞+名詞組合
設置/獲取某個值的Method應該遵循setV/getV規范
返回長度的Method應該命名為length
測試某個布爾值的Method應該命名為isV
將對象轉換為某個特定類型的Mehod應該命名為toF
getDate() length() isReady() toOracleFormat()
變量名
普通變量命名應該采用首字母小寫其他字母首字母大寫的方式
final static變量的名字應該都大寫並且指出完整含義如果一個常量名稱由多個單詞組成則應該用下劃線來分割這些單詞如
NUM_DAYS_IN_WEEK MAX_VALU
如果需要對變量名進行縮寫時一定要注意整個代碼中縮寫規則的一致性
context=ctx message=msg
通過在結尾處放置一個量詞就可創建更加統一的變量
First(一組變量中的第一個) Last(一組變量中的最後一個) Next(一組變量中的下一個變量) Prev(一組變量中的上一個) Cur(一組變量中的當前變量)
無論什麼時候均提倡應用常量取代數字固定字符串也就是說程序中除以外盡量不應該出現其他數字
索引變量ijk等只作為小型循環的循環索引變量
邏輯變量避免用flag來命名狀態變量用is來命名邏輯變量
if(isClosed){ dosomeworks; return; }
數組
總是使用以下方式定義數組
int[] arr = new int[];
禁止使用C語言的是形式
禁止 int arr[] = new int[];
集合
數組或者容器推薦命名方式為名詞+s的方式例如
List<Person> persons = getPerson() for(Person person : persons){ dosomeworks; }
泛型
應該盡量簡明扼要(最好是一個字母)以利於與普通的class或interface區分
Container中的Element應該用E表示Map裡的key用K表示value用VType用T表示異常用X表示
如果需要接收多個Type類型的參數應該用鄰接T的大寫字母——例如S——來依次表示當然也可以用T T這樣的方式
public class HashSet<E> extends AbstractSet<E> {…} public class HashMap<K V> extends AbstractMap<K V> {…} public class ThreadLocal<T> {…} public interface Functor<T X extends Throwable> { T val() throws X; }
推薦的命名
當要區別接口和實現類的時候可以在類的後面加上Impl
interface Container class ContainerImpl
Exception類最好能用Exception做為類命名的結尾
DataNotFoundException InvalidArgumentException
抽象類最好能用Abstract做為類命名的開頭
AbstractBeanDefinition AbstractBeanFactory
Test類最好能用Test做為類命名的結尾
ContainerTest
簡稱與縮寫(不推薦使用)
cp代表colorPoint buf代表buffer off代表offset len代表length
除非是在循環中否則一般不推薦使用單個字母作為變量名不過也有例外即約定俗成的單個字母
b代表byte c代表char d代表double e代表Exception f代表float i j k代表整數 l代表long o代表Object s代表String v代表某些類型的特定值
代碼風格
花括號
花括號統一采用以下格式
if(bool experssion){ dosomework; }
除非花括號中為空不然任何情況下不能省略花括號並且花括號必須換行例如
if(i==){ return; } while(true) {}
以下寫法禁止出現
禁止 if(i != ) return; 禁止 if(i !=) {return;}
括號
括號的前後一個字符不需要空格例如
Person p = new Person(Jack )
空格
逗號之後緊跟一個空格
Person p = new Person(Jack China)
二元操作符前後跟空格
int i = a + b – c * d;
一元操作符不需要空格for語句分號後有空格
for(int i = ; I < ; i++){ dosomework; }
括號前後不需要空格
類
類的定義結構按照順序為
) 常量
) 成員變量
) 構造函數
) 成員函數
) get和set方法
各個部分之間留出一個空行
例如
規范類模板
class Person{ private final static int MAX_AGE = ; private String firstname = Jack public Person(){} public Person(String firstname){ thisfirstname = firstname; } public void doExercise(){ dosomeworks; run() } private void run(){ dosomeworks; } public getFirstname(){ return firstname; } public setFirstname(String firstname){ thisfirstname = firstname; } }
構造函數
) 參數為空的構造函數出現在最上方
) 有調用關系的構造函數相鄰
) 參數盡量由少到多從上至下排序
使用成員變量
在類的方法內引用成員變量了命名沖突以外不使用this非特殊情況在類的方法內都不使用get和set方法存取成員變量
方法
有調用關系的方法盡量放在相鄰的位置public和private方法可以交叉放置
get和set方法所有需要公開的成員變量都要符合良好的javabean規范提供get和set方法盡量使用IDE工具自動生成
Javadoc注釋
在每個程序的最開始部分一般都用Javadoc注釋對程序的總體描述以及版權信息之後在主程序中可以為每個類接口方法字段添加 Javadoc注釋每個注釋的開頭部分先用一句話概括該類接口方法字段所完成的功能這句話應單獨占據一行以突出其概括作用在這句話後面可以跟隨更加詳細的描述段落在描述性段落之後還可以跟隨一些以Javadoc注釋標簽開頭的特殊段落例如上面例子中的@auther和@version這些段落將在生成文檔中以特定方式顯示
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26728.html