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注釋主要涉及范圍:類、屬性、方法。

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, 0, this.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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM