阿里巴巴Java開發規范手冊(一)


一、編程規范

(一)命名規約

  1、命名不能以下划線或美元符號開始和結尾

  2、不能中英文結合命名

  3、類名使用駝峰形式(首字母大寫)

  4、方法名、參數名、成員變量、局部變量均使用駝峰形式(首字母小寫)

  5、常量名均使用大寫,單詞間用下划線分隔

  6、抽象類名用Abstract或Base開頭,異常類名用Exception結尾,

      測試類名用測試類名稱開始以Test結尾

  7、數組定義:String[] args

  8、POJO類中的任何布爾類型的變量都不要加is,boolean isSuccess的屬性,

      方法是isSuccess(),RPC框架在反向解析的時候,認為對應的屬性名是success,

    導致屬性獲取不到,進而拋出異常

  9、包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。

    包名統一使用單數形式,但是類名如果有復數含義,包名可以使用復數形式

  10、杜絕完全不規范的縮寫,隨意縮寫嚴重降低代碼可閱讀性

  11、若使用到了設計模式,建議在類名中體現出具體模式

  12、接口類中的方法和屬性不要加任何修飾符,加有效javadoc注釋

  13、接口和實現類的命名有兩套規則

    (1)對於Service和DAO類,基於SOA的理念,暴露出來的服務一定是接口,

      內部的實現類用Impl的后綴與接口區別:CacheServiceImpl實現CacheService接口

    (2)若形容能力的接口名稱,取對應的形容詞做接口(-able的形式):

       AbstractTranslator實現Translatorable

  14、枚舉類名帶上Enum后綴,全部大寫,單詞間用下划線分隔

  15、各層命名規約:

     (a)Service/DAO層方法命名規約

      (1)獲取單個對象的方法用get做前綴

      (2)獲取多個對象的方法用list做前綴

      (3)獲取統計值的方法用count做前綴

      (4)插入的方法用save或insert做前綴

      (5)刪除的方法用remove或delete做前綴

      (6)修改的方法用update做前綴

    (b)領域模型命名規約

      (1)數據對象:***DO,***即為數據表名

      (2)數據傳輸對象:***DTO,***為業務領域相關的名稱

      (3)展示對象:***VO,***一般為網頁名稱

      (4)POJO是DO/DTO/BO/VO的統稱,禁止命名成***POJO

(二)常量定義

  1、不允許出現任何未經定義的常量,直接出現在代碼中

  2、long或者Long初始賦值時必須使用大寫的L,小些容易跟數字1混淆

  3、不要使用一個常量類維護所有的常量,應按常量功能進行歸類,分開維護

    如:緩存相關的常量放在類:CacheConsts下;

      系統配置相關的常量放在類:ConfigConsts下

  4、常量的復用有五個層次

    (1)跨應用共享常量:放置在二方庫中,通常是client.jar中的const目錄下

    (2)應用內共享常量:放置在一方庫的modules中的const目錄下

    (3)子工程內部共享常量:即在當前子工程的const目錄下

    (4)包內共享常量:即在當前包下的const目錄下

    (5)類內共享常量:直接在類內部private static final 定義

  5、變量值僅在一個范圍內變化用Enum類。若還帶有名稱之外的延伸屬性,必須使用Enum類

    數字代表延伸信息表星期幾:public Enum{MONDAY(1),TUESDAY(2),WEDNESDAY(3),

    THURSDAY(4),FRIDAY(5),SATURDAY(6),SUNDAY(7);}

(三)格式規約

  1、若大括號內為空,{}即可,不需換行;若是非空代碼塊則:

    (1) { 前不換行

    (2) { 后換行

    (3) } 前換行

    (4) } 后不換行

  2、{ 和后一個字符之間,} 和前一個字符之間均沒有空格

  3、if/for/while/switch/do等保留字與 { } 之間都必須加空格

  4、任何運算符左右必須加一個空格(=、&&、+、-、*、/、:?等)

  5、代碼塊縮進4個空格,若使用tab縮進 請設置成1個tab為4個空格

  public static void main(String args[]){

    String say = "hello";

    int flag = 0;

    if (flag == 0) {

      System.out.println(say);

    }

    if (flag == 1) {

      System.out.println("world");

    } else {

      System.out.println("ok"); 

    }

  }

  6、單行字符數限制不超過120個,超出需要換行,換行時規約

    (1)換行時相對上一行縮進4個空格

    (2)運算符與下文一起換行

    (3)方法調用的點符號與下文一起換行

    (4)在多個參數超長,逗號后進行換行

    (5)在括號前不要換行

  StringBuffer sb = new StringBuffer();

  sb.append("zi").append("xin")...

    .append("huang");

  7、方法參數在定義和傳入時,多個參數逗號后邊必須加空格

    method("a", "b", "c");

  8、沒有必要增加若干行空格來時某一行的字符與上一行的相應字符對齊

    int a = 3;

    long b = 4L;

    float c = 5F;

    StringBuffer sb = new StringBuffer();

    增加sb這個變量若需要對齊 則給a、b、c、都要增加幾個空格,

    在變量比較多的情況下是一種累贅的事情

  9、IDE的text file encoding設置為UTF-8;IDE中文件的換行符使用Unix格式,

    不要使用Windows格式

  10、方法體內的執行語句組、變量的定義語句組、不同的業務邏輯之間或者

    不同的語義之間插入一個空行。相同業務邏輯和語義之間不需要空行

 


出自《阿里巴巴Java開發手冊》 喜歡請支持正版 

 


免責聲明!

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



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