JAVA編程規約之命名規約

一命名規約
1. 【強制】 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
反例: _name / __name / Object/name/name / Object$

  1. 【強制】 代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。說明:正確的英文拼寫和語法可以讓閱讀者易於理解,避免歧義。注意,即使純拼音命名方式也要避免採用。
    反例: DaZhePromotion [打折] / getPingfenByName() [評分] / int 某變量 = 3
    正例: alibaba / taobao / youku / hangzhou 等國際通用的名稱,可視同英文。

  2. 【強制】類名使用 UpperCamelCase 風格,必須遵從駝峯形式,但以下情形例外:(領域模型的相關命名)
    . DO / BO / DTO / VO 等。
    正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
    反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

  3. 【強制】方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,必須遵從駝峯形式。
    正例: localValue / getHttpMessage() / inputUserId

  4. 【強制】常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。
    正例: MAX_STOCK_COUNT
    反例: MAX_COUNT

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

    1. 【強制】中括號是數組類型的一部分,數組定義如下:String[] args;
      反例:使用 String args[]的方式來定義。
  6. 【強制】POJO 類中布爾類型的變量,都不要加 is,否則部分框架解析會引起序列化錯誤。
    反例:定義爲基本數據類型 Boolean isSuccess;的屬性,它的方法也是 isSuccess(),RPC框架在反向解析的時候,“以爲”對應的屬性名稱是 success,導致屬性獲取不到,進而拋出異常。

  7. 【強制】包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一使用單數形式,但是類名如果有複數含義,類名可以使用複數形式。
    正例: 應用工具類包名爲 com.alibaba.open.util、類名爲 MessageUtils(此規則參考
    spring 的框架結構)

  8. 【強制】杜絕完全不規範的縮寫,避免望文不知義。
    反例: AbstractClass“縮寫”命名成 AbsClass;conditio“縮寫”命名成 condi,此類隨意縮寫嚴重降低了代碼的可閱讀性。

  9. 【推薦】如果使用到了設計模式,建議在類名中體現出具體模式。
    說明:將設計模式體現在名字中,有利於閱讀者快速理解架構設計思想。
    正例:public class OrderFactory; public class LoginProxy; public class ResourceObserver;

  10. 【推薦】接口類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔性,並加上有效的 Javadoc 註釋。儘量不要在接口裏定義變量,如果一定要定義變量,肯定是與接口方法相關,並且是整個應用的基礎常量。正例:接口方法簽名:void f();接口基礎常量表示:String COMPANY = “alibaba”;
    反例:接口方法定義:public abstract void f();
    說明:JDK8 中接口允許有默認實現,那麼這個 default 方法,是對所有實現類都有價值的默認實現。

  11. 接口和實現類的命名有兩套規則:
    1)【強制】對於 Service 和 DAO 類,基於 SOA 的理念,暴露出來的服務一定是接口,內部
    的實現類用 Impl 的後綴與接口區別。
    正例:CacheServiceImpl 實現 CacheService 接口。
    2)【推薦】如果是形容能力的接口名稱,取對應的形容詞做接口名(通常是–able 的形式)。
    正例:AbstractTranslator 實現 Translatable。

  12. 【參考】枚舉類名建議帶上 Enum 後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。說明:枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。
    正例:枚舉名字:DealStatusEnum,成員名稱:SUCCESS / UNKOWN_REASON。

  13. 【參考】各層命名規約:
    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。

二常量定義
1. 【強制】不允許出現任何魔法值(即未經定義的常量)直接出現在代碼中。
反例: String key=”Id#taobao_”+tradeId;cache.put(key, value);

  1. 【強制】long 或者 Long 初始賦值時,必須使用大寫的 L,不能是小寫的 l,小寫容易跟數字1 混淆,造成誤解。
    說明:Long a = 2l; 寫的是數字的 21,還是 Long 型的 2?

  2. 【推薦】不要使用一個常量類維護所有常量,應該按常量功能進行歸類,分開維護。如:緩存相關的常量放在類:CacheConsts 下;系統配置相關的常量放在類:ConfigConsts 下。
    說明:大而全的常量類,非得使用查找功能才能定位到修改的常量,不利於理解和維護。

  3. 【推薦】常量的複用層次有五層:跨應用共享常量、應用內共享常量、子工程內共享常量、包內共享常量、類內共享常量。
    1) 跨應用共享常量:放置在二方庫中,通常是 client.jar 中的 constant 目錄下。
    2) 應用內共享常量:放置在一方庫的 modules 中的 constant 目錄下。
    反例:易懂變量也要統一定義成應用內共享常量,兩位攻城師在兩個類中分別定義了表示“是”的變量:
    類 A 中:public static final String YES = “yes”;
    類 B 中:public static final String YES = “y”;
    A.YES.equals(B.YES),預期是 true,但實際返回爲 false,導致產生線上問題。
    3) 子工程內部共享常量:即在當前子工程的 constant 目錄下。
    4) 包內共享常量:即在當前包下單獨的 constant 目錄下。
    5) 類內共享常量:直接在類內部 private static final 定義。

  4. 【推薦】如果變量值僅在一個範圍內變化用 Enum 類。如果還帶有名稱之外的延伸屬性,必須使用 Enum 類,下面正例中的數字就是延伸信息,表示星期幾。
    正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5),SATURDAY(6), SUNDAY(7);}

三 格式規約
1. 【強制】大括號的使用約定。如果是大括號內爲空,則簡潔地寫成{}即可,不需要換行;如果是非空代碼塊則:
1) 左大括號前不換行。
2) 左大括號後換行。
3) 右大括號前換行。
4) 右大括號後還有 else 等代碼則不換行;表示終止右大括號後必須換行。

  1. 【強制】 左括號和後一個字符之間不出現空格;同樣,右括號和前一個字符之間也不出現空格。詳見第 5 條下方正例提示。

  2. 【強制】if/for/while/switch/do 等保留字與左右括號之間都必須加空格。

  3. 【強制】任何運算符左右必須加一個空格。
    說明:運算符包括賦值運算符=、邏輯運算符&&、加減乘除符號、三目運行符等。

  4. 【強制】縮進採用 4 個空格,禁止使用 tab 字符。
    說明:如果使用 tab 縮進,必須設置 1 個 tab 爲 4 個空格。IDEA 設置 tab 爲 4 個空格時,
    請勿勾選 Use tab character;而在 eclipse 中,必須勾選 insert spaces for tabs。

  5. 【強制】單行字符數限制不超過 120 個,超出需要換行,換行時遵循如下原則:
    1) 第二行相對第一行縮進 4 個空格,從第三行開始,不再繼續縮進,參考示例。
    2) 運算符與下文一起換行。
    3) 方法調用的點符號與下文一起換行。
    4) 在多個參數超長,逗號後進行換行。
    5) 在括號前不要換行,見反例。

發佈了28 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章