Java命名规范和代码风格
Java命名規范和代碼風格
基本命名規范
???? 包命名
包名按照域名的范圍從大到小逐步列出,恰好和Internet上的域名命名規則相反。
由一組以“.”連接的標識符構成,通常第一個標識符為符合網絡域名的兩個或者三個英文小寫字母。
??????? 例:cn.edu.xupt.JavaTest
???? 類,接口命名
??????? 類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫;如果類名稱由多個單詞組成,則每個單詞的首字母均應為大寫例如TestPage;
??????? 如果類名稱中包含單詞縮寫,則這個縮寫詞的每個字母均應大寫,如:XMLExample,還有一點命名技巧就是由于類是設計用來代表對象的,所以在命名類時應?盡量選擇???? 名詞。
例:People?TestPage?XMLExample
???? 方法名
方法的名字的第一個單詞應以小寫字母作為開頭,后面的每個單詞則用大寫字母開頭。可以為動詞或動詞+名詞組合。
設置/獲取某個值的Method,應該遵循setV/getV規范
返回長度的Method,應該命名為length
測試某個布爾值的Method,應該命名為isV
將對象轉換為某個特定類型的Mehod應該命名為toF
例:getDate();?length();?isReady();?toOracleFormat();
? 變量名
??????? 1.普通變量命名應該全部采用小寫字母。
??????? 2.final?static變量的名字應該都大寫,并且指出完整含義,類似于c語言里的宏定義。如果一個常量名稱由多個單詞組成,則應該用下劃線來分割這些單詞如。
例:NUM_DAYS_IN_WEEK?MAX_VALU
3.?如果需要對變量名進行縮寫時,一定要注意整個代碼中縮寫規則的一致性
??????? 例:context=ctx?message=msg
4.?無論什么時候,均提倡應用常量取代數字、固定字符串。也就是說,程序中除0,1以外,盡量不應該出現其他數字。
5.索引變量:i、j、k等只作為小型循環的循環索引變量。
6.?邏輯變量:避免用flag來命名狀態變量,用is來命名邏輯變量。
??????? 例:
???????? if(isClosed){?
?????????????? dosomeworks;?
?????????????? return;?
???????? }
???? 集合
?????? 數組或者容器推薦命名方式為名詞+s的方式。
?????? 例:
????????? List?persons?=?getPerson();?
???????????? for(Person?person?:?persons){?
?????????????????? dosomeworks;?
???????????? }
???? 泛型
??????? 應該盡量簡明扼要(最好是一個字母),以利于與普通的class或interface區分。
??????? Container中的Element應該用E表示;
??????? Map里的key用K表示,value用V;
??????? Type用T表示;
??????? 異常用X表示如果需要接收多個Type類型的參數,應該用鄰接T的大寫字母——例如S——來依次表示,當然也可以用T1,?T2這樣的方式
??????? 例:
??????? public?class?HashSet?extends?AbstractSet?{
???????????? …
?????? }
?????? public?class?HashMap<k,?v="">?extends?AbstractMap<k,?v="">?{
???????????? …
?????? }?? 
?????? public?class?ThreadLocal?{
???????????? …
?????? }?
?????? public?interface?Functor<t,?throwable=""?extends=""?x="">?{
?????????????? T?val()?throws?X;?
?????? }
推薦的命名
1.當要區別接口和實現類的時候,可以在類的后面加上“Impl”。
例:interface?Container?class?ContainerImpl
2.Exception類最好能用“Exception”做為類命名的結尾
例:DataNotFoundException?InvalidArgumentException
3.抽象類最好能用“Abstract”做為類命名的開頭
例:AbstractBeanDefinition?AbstractBeanFactory
4.?Test類最好能用“Test”做為類命名的結尾
??????? 例:ContainerTest
代碼風格
花括號
花括號統一采用以下格式:
??????? if(bool?experssion){?
????????????? dosomework;?
???????? }
???????? 除非花括號中為空,不然任何情況下不能省略花括號。
???????? 例如:
???????? if(i==0){?
??????????????? return;?
???????? }
????????? while(true){
????????? }
  以下寫法禁止出現:?? 
??????? 禁止
???????? if(i?!=?0)?
????????????? return;?
??????? 盡量不要
??????? if(i?!=0)?
??????? {
???????????? return;
??????? }
圓括號
括號的前,后一個字符不需要空格,例如:
Person?p?=?new?Person(“Jack”,?17);
空格
1.逗號之后緊跟一個空格。
???????? Person?p?=?new?Person(“Jack”,?16,?“China”);
???????? 2.圓括號里的分號后跟空格
???????? for(int?i?=?0;?I?<?10;?i++){
?????????????? dosomework;?
???????? }
3. 二元操作符前后跟空格。
int?i?=?a?+?b?–?c?*?d;
4.?一元操作符不需要空格。
??????? for(int?i?=?0;?I?<?10;?i++){
????????????? dosomework;?
??????? }
5.?括號前后不需要空格
類
類的定義結構按照順序為:
1)?常量
2)?成員變量
3)?構造函數
4)?成員函數
5)?get和set方法
各個部分之間留出一個空行。
例如:
規范類模板:
??????? class?Person{?
??????????????? private?final?static?int?MAX_AGE?=?100;?
?????? ? ? ? ?? private?String?firstname?=?“Jack”;
?
??????????????? public?Person(){
??????????????? }
??????????????? public?Person(String?firstname){?
?????????????? ? ? ? ?? this.firstname?=?firstname;?
??????????????? }
?
??????????????? public?void?doExercise(){?
?????????????????????? dosomeworks;?
?????????????????????? run();?
??????????????? }?
??????????????? private?void?run(){?
????????????????????? dosomeworks;?
??????????????? }?
??????????????? public?getFirstname(){?
???????????????????????? return?firstname;?
??????????????? }?
???????????????? public?setFirstname(String?firstname){?
???????????????????????? this.firstname?=?firstname;?
?????????????? }
??????? }
構造函數
1)?參數為空的構造函數出現在最上方
2)?有調用關系的構造函數相鄰
3)?參數盡量由少到多從上至下排序
使用成員變量
在類的方法內引用成員變量除了命名沖突以外,不使用this。非特殊情況在類的方法內都不使用get和set方法存取成員變量。
方法
有調用關系的方法盡量放在相鄰的位置,public和private方法可以交叉放置。
?? get和set方法,所有需要公開的成員變量都要符合良好的javabean規范,提供get和set方法,盡量使用IDE工具自動生成。
Javadoc注釋
在每個程序的最開始部分,一般都用Javadoc注釋對程序的總體描述以及版權信息,之后在主程序中可以為每個類、接口、方法、字段添加?Javadoc注釋,每個注釋的開頭部分先用一句話概括該類、接口、方法、字段所完成的功能,這句話應單獨占據一行以突出其概括作用,在這句話后面可以跟?隨更加詳細的描述段落。在描述性段落之后還可以跟隨一些以Javadoc注釋標簽開頭的特殊段落,例如上面例子中的@auther和@version,這?些段落將在生成文檔中以特定方式顯示。
?? ?? ? 
轉載于:https://www.cnblogs.com/csdndreamer/p/5490651.html
總結
以上是生活随笔為你收集整理的Java命名规范和代码风格的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 全国计算机等级考试题库二级C操作题100
- 下一篇: 经典游戏扫雷详解--你也可以写出扫雷和玩
