Java編程風(fēng)格與命名規(guī)范整理

          基本命名規(guī)范

              包命名

              包名按照域名的范圍從大到小逐步列出,恰好和Internet上的域名命名規(guī)則相反。

              由一組以“。”連接的標(biāo)識(shí)符構(gòu)成,通常第一個(gè)標(biāo)識(shí)符為符合網(wǎng)絡(luò)域名的兩個(gè)或者三個(gè)英文小寫字母。

              People  TestPage  XMLExample

              類,接口命名

              類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫;如果類名稱由多個(gè)單詞組成,則每個(gè)單詞的首字母均應(yīng)為大寫例如TestPage;如果類名稱中包含單詞縮寫,則這個(gè)所寫詞的每個(gè)字母均應(yīng)大寫,如:XMLExample,還有一點(diǎn)命名技巧就是由于類是設(shè)計(jì)用來代表對(duì)象的,所以在命名類時(shí)應(yīng)盡量選擇名詞。

              People  TestPage  XMLExample

              方法名

              方法的名字的第一個(gè)單詞應(yīng)以小寫字母作為開頭,后面的單詞則用大寫字母開頭。可以為動(dòng)詞或動(dòng)詞+名詞組合。

              設(shè)置/獲取某個(gè)值的Method,應(yīng)該遵循setV/getV規(guī)范

              返回長(zhǎng)度的Method,應(yīng)該命名為length

              測(cè)試某個(gè)布爾值的Method,應(yīng)該命名為isV

              將對(duì)象轉(zhuǎn)換為某個(gè)特定類型的Mehod應(yīng)該命名為toF

              getDate();  length();  isReady();  toOracleFormat();

              變量名

              1.普通變量命名應(yīng)該采用首字母小寫,其他字母首字母大寫的方式。

              2.final static變量的名字應(yīng)該都大寫,并且指出完整含義。如果一個(gè)常量名稱由多個(gè)單詞組成,則應(yīng)該用下劃線來分割這些單詞如。

              NUM_DAYS_IN_WEEK  MAX_VALU

              3. 如果需要對(duì)變量名進(jìn)行縮寫時(shí),一定要注意整個(gè)代碼中縮寫規(guī)則的一致性

              context=ctx  message=msg

              4. 通過在結(jié)尾處放置一個(gè)量詞,就可創(chuàng)建更加統(tǒng)一的變量

              First(一組變量中的第一個(gè))  Last(一組變量中的最后一個(gè))  Next(一組變量中的下一個(gè)變量)  Prev(一組變量中的上一個(gè))  Cur(一組變量中的當(dāng)前變量)

              5. 無論什么時(shí)候,均提倡應(yīng)用常量取代數(shù)字、固定字符串。也就是說,程序中除0,1以外,盡量不應(yīng)該出現(xiàn)其他數(shù)字。

              6. 索引變量:i、j、k等只作為小型循環(huán)的循環(huán)索引變量。

              7. 邏輯變量:避免用flag來命名狀態(tài)變量,用is來命名邏輯變量。

              if(isClosed){  dosomeworks;  return;  }

              數(shù)組

              總是使用以下方式定義數(shù)組:

              int[] arr = new int[10];

              禁止使用C語言的是形式:

              禁止  int arr[] = new int[10];

              集合

              數(shù)組或者容器推薦命名方式為名詞+s的方式,例如:

              List<Person> persons = getPerson();  for(Person person : persons){  dosomeworks;  }

              泛型

              應(yīng)該盡量簡(jiǎn)明扼要(最好是一個(gè)字母),以利于與普通的class或interface區(qū)分

              Container中的Element應(yīng)該用E表示;Map里的key用K表示,value用V;Type用T表示;異常用X表示

              如果需要接收多個(gè)Type類型的參數(shù),應(yīng)該用鄰接T的大寫字母——例如S——來依次表示,當(dāng)然也可以用T1, T2這樣的方式

              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;   }

              推薦的命名

              1.當(dāng)要區(qū)別接口和實(shí)現(xiàn)類的時(shí)候,可以在類的后面加上“Impl”。

              interface Container  class ContainerImpl

              2.Exception類最好能用“Exception”做為類命名的結(jié)尾

              DataNotFoundException  InvalidArgumentException

              3.抽象類最好能用“Abstract”做為類命名的開頭

              AbstractBeanDefinition  AbstractBeanFactory

              4. Test類最好能用“Test”做為類命名的結(jié)尾

              ContainerTest

              5.簡(jiǎn)稱與縮寫(不推薦使用)

              cp代表colorPoint   buf代表buffer   off代表offset   len代表length

              除非是在循環(huán)中,否則一般不推薦使用單個(gè)字母作為變量名,不過也有例外,即約定俗成的單個(gè)字母

              b代表byte  c代表char  d代表double  e代表Exception   f代表float  i, j, k代表整數(shù)   l代表long  o代表Object   s代表String   v代表某些類型的特定值

              代碼風(fēng)格

              花括號(hào)

              花括號(hào)統(tǒng)一采用以下格式:

              if(bool experssion){  dosomework;  }

              除非花括號(hào)中為空,不然任何情況下不能省略花括號(hào),并且花括號(hào)必須換行,例如:

              if(i==0){  return;  }  while(true) {}

              以下寫法禁止出現(xiàn):

              禁止  if(i != 0) return;  禁止  if(i !=0) {return;}

              括號(hào)

              括號(hào)的前,后一個(gè)字符不需要空格,例如:

              Person p = new Person(“Jack”, 17);

              空格

              逗號(hào)之后緊跟一個(gè)空格。

              Person p = new Person(“Jack”, 16, “China”);

              2. 二元操作符前后跟空格。

              int i = a + b – c * d;

              3. 一元操作符不需要空格,for語句分號(hào)后有空格。

              for(int i = 0; I < 10; i++){  dosomework;  }

              4. 括號(hào)前后不需要空格

              類

              類的定義結(jié)構(gòu)按照順序?yàn)椋?/span>

              1) 常量

              2) 成員變量

              3) 構(gòu)造函數(shù)

              4) 成員函數(shù)

              5) get和set方法

              各個(gè)部分之間留出一個(gè)空行。

              例如:

              規(guī)范類模板:

              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;  }  }

              2.構(gòu)造函數(shù)

              1) 參數(shù)為空的構(gòu)造函數(shù)出現(xiàn)在最上方

              2) 有調(diào)用關(guān)系的構(gòu)造函數(shù)相鄰

              3) 參數(shù)盡量由少到多從上至下排序

              3.使用成員變量

              在類的方法內(nèi)引用成員變量了命名沖突以外,不使用this。非特殊情況在類的方法內(nèi)都不使用get和set方法存取成員變量。

              4.方法

              有調(diào)用關(guān)系的方法盡量放在相鄰的位置,public和private方法可以交叉放置。

              5.get和set方法,所有需要公開的成員變量都要符合良好的javabean規(guī)范,提供get和set方法,盡量使用IDE工具自動(dòng)生成。

              Javadoc注釋

              在每個(gè)程序的最開始部分,一般都用Javadoc注釋對(duì)程序的總體描述以及版權(quán)信息,之后在主程序中可以為每個(gè)類、接口、方法、字段添加 Javadoc注釋,每個(gè)注釋的開頭部分先用一句話概括該類、接口、方法、字段所完成的功能,這句話應(yīng)單獨(dú)占據(jù)一行以突出其概括作用,在這句話后面可以跟隨更加詳細(xì)的描述段落。在描述性段落之后還可以跟隨一些以Javadoc注釋標(biāo)簽開頭的特殊段落,例如上面例子中的@auther和@version,這些段落將在生成文檔中以特定方式顯示



          posted on 2012-03-26 12:45 脈凌網(wǎng)絡(luò) 閱讀(2884) 評(píng)論(4)  編輯  收藏

          評(píng)論

          # 有調(diào)用關(guān)系的方法盡量放在相鄰的位置 2012-03-26 17:06 選礦設(shè)備  回復(fù)  更多評(píng)論   

          我覺得我對(duì)著東西學(xué)不會(huì) 優(yōu)化我還行 編程就不行了

          # re: Java編程風(fēng)格與命名規(guī)范整理 2012-03-27 20:43 新款女鞋  回復(fù)  更多評(píng)論   

          過來看了一下哈,文章寫得非常的好,我是你的粉絲
          新款女鞋www.a0a7.com
          淘寶商城女裝www.5a77.com

          # re: Java編程風(fēng)格與命名規(guī)范整理 2012-03-30 07:51 tb  回復(fù)  更多評(píng)論   

          非常不錯(cuò)的

          # re: Java編程風(fēng)格與命名規(guī)范整理 2012-03-30 15:39 締造者  回復(fù)  更多評(píng)論   

          本人新創(chuàng)建的java 學(xué)習(xí)QQ群:224533769 有興趣的可以一起討論

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 嘉祥县| 长沙县| 阳曲县| 两当县| 邵阳县| 丹阳市| 东阳市| 阳朔县| 泸西县| 玉田县| 烟台市| 景泰县| 竹溪县| 天峻县| 大名县| 浪卡子县| 海南省| 喀喇| 古丈县| 铅山县| 友谊县| 台湾省| 三亚市| 大荔县| 韶山市| 诏安县| 射阳县| 平潭县| 河东区| 鄂托克旗| 泾川县| 安宁市| 崇文区| 东城区| 静乐县| 确山县| 晋城| 凤冈县| 兴宁市| 汉源县| 思茅市|