1. 程式人生 > >Java基礎之命名規範

Java基礎之命名規範

類命名規範:

類名使用 UpperCamelCase 風格(首字母都大寫),必須遵從駝峰形式。 例如: MessageUtil

抽象類命名使用 Abstract 或 Base 開頭 ; 異常類命名使用 Exception 結尾 ; 測試類命名以它要測試的類的名稱開始,以 Test 結尾。

對於 Service 和 DAO 類,基於 SOA 的理念,暴露出來的服務一定是介面,內部的實現類用 Impl 的字尾與介面區別。

推薦實體類沒有後綴名。

POJO 類中布林型別的變數,都不要加 is ,否則部分框架解析會引起序列化錯誤。

 

其他:

方法名、引數名、成員變數、區域性變數都統一使用 lowerCamelCase 風格(第一個單詞首字母小寫,其他單詞首字母大寫),必須遵從駝峰形式。 例如: myFirstName

常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。 例如:MAX_NAME_LENGTH

 

包名的書寫規範 (Package)

推薦使用公司或機構的頂級域名為包名的字首,目的是保證各公司/機構內所使用的包名的唯一性

包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞,包名統一使用單數形式。如果類名有複數含義,類名可以使用複數形式。

實際應用中:

  各層命名規約:
  A) Service / DAO 層方法命名規約
    1 ) 獲取單個物件的方法用 get 做字首。
    2 ) 獲取多個物件的方法用 list 做字首。
    3 ) 獲取統計值的方法用 count 做字首。
    4 ) 插入的方法用 save( 推薦 ) 或 insert 做字首。
    5 ) 刪除的方法用 remove( 推薦 ) 或 delete 做字首。
    6 ) 修改的方法用 update 做字首。
  B) 領域模型命名規約
    1 ) 資料物件: xxxDO , xxx 即為資料表名。
    2 ) 資料傳輸物件: xxxDTO , xxx 為業務領域相關的名稱。
    3 ) 展示物件: xxxVO , xxx 一般為網頁名稱。
    4 ) POJO 是 DO / DTO / BO / VO 的統稱,禁止命名成 xxxPOJO 。

 

推薦:

如果使用到了設計模式,建議在類名中體現出具體模式。

介面類中的方法和屬性不要加任何修飾符號 (public 也不要加 ) ,保持程式碼的簡潔性,並加上有效的 Javadoc 註釋。儘量不要在接口裡定義變數,如果一定要定義變數,肯定是與介面方法相關,並且是整個應用的基礎常量。

 

註釋的書寫規範 (Javadoc)
Java除了可以採用我們常見的註釋方式(//、/* */)之外,Java語言規範還定義了一種特殊的註釋,也就是我們所說的Javadoc註釋,以/**開頭,而以*/結束, Javadoc 註釋可以被自動轉為線上文件,省去了單獨編寫程式文件的麻煩。 推薦使用。

Javadoc註釋主要涉及範圍:類、屬性、方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

import java.net.InetAddress;

import java.util.Arrays;

/**

 * 該類的整體性描述。

 *

 * @author 作者

 * @version 1.0, 05/22/07

 * @since 1.0

 */

public class ChannelBinding {

/**

 * 對該變數的備註資訊

 */

private InetAddress initiator;

/**

 * 對該變數的備註資訊

 */

private InetAddress acceptor;

/**

 * 對該變數的備註資訊

 */

    private  byte[] appData;

   

    /**

     * 對該類的建構函式的備註資訊。

     *

     * @param initAddr 對引數的備註。

     * @param acceptAddr對引數的備註。

     * @param appData對引數的備註。

     */

    public ChannelBinding(InetAddress initAddr, InetAddress acceptAddr,

              byte[] appData) {

         initiator = initAddr;

         acceptor = acceptAddr;

         if (appData != null) {

              this.appData = new byte[appData.length];

              java.lang.System.arraycopy(appData, 0this.appData, 0,

                   appData.length);

         }

    }

  

    /**

     * 對該類的具體一函式的備註資訊

     *

     * @param obj 引數的備註資訊

     * @return 返回值的備註資訊

     */

    public boolean equals(Object obj) {

         if (this == obj)

              return true;

         if (! (obj instanceof ChannelBinding))

              return false;

         ChannelBinding cb = (ChannelBinding) obj;

         return Arrays.equals(appData, cb.appData);

    }

}