命名風格
1. 代碼命名不能以下划線或者美元符號開頭或者結尾 2. 代碼命名不能以中文拼音或者中文拼音與英文混合方式 3. 類名使用UpperCamCamelCase風格,但DO、PO、DTO、VO、BO等除外 4. 方法名、參數名、變量名統一使用lowerCamelCase,必須遵守駝峰命名 5. 常量名全部大寫,單詞間用下划線隔開 6. 抽象類必須以Abstract或者Base開頭,異常類必須以Exception結尾,測試 類以測試的類的名稱開頭Test結尾 7. 類型與中括號緊挨相連標示數組 8. POJO類中布爾類型變量不要加is前綴 9. 包名統一小寫,點分隔符有且有一個自然語義單詞 10. 避免在父子類和不同代碼塊中采用相同變量名 11. 避免不規范的縮寫命名 12. 在對元素命名時用完整單詞組合表達其意 13. 常量和變量命名時,表示類型放在詞尾,如:idList、TERMINATED_TREAD_COUNT 14. 接口、類、方法、模塊使用設計模式,命名時要體現具體模式 15. 接口類中的方法和屬性不要加任何修飾符,並加上有效的javadoc。 16. 接口和實現類的命名規則: 1、對於service和dao類,實現類必須用Impl結尾; 2、如果是形容能力的接口名稱,取對應的形容詞為接口名 AbstractTranslator實現 Translatable接口 17. 枚舉類名加Enum后綴,枚舉成員名稱全大寫,單詞間用下划線隔開 18. 各層命名規范: A) Service/DAO層命名規約 1.獲取單個對象的方法用get做前綴 2.獲取多個對象的方法用list做前綴,如:listObjects 3.獲取統計值的方法用count做前綴 4.插入方法用save/insert做前綴 5.刪除方法用delete/remove做前綴 6.修改方法用update做前綴 B)領域模型命名規范 1.數據對象:xxxDO, xxx為數據庫表名 2.數據傳輸對象:xxxDTO,xxx為業務模型相關名稱 3.展示對象:xxxVO,xxx一般為網頁名稱 4.POJO是對DO、DTO、VO、BO的統稱,禁止xxxPOJO
常量定義
1. 代碼中禁止出現魔法值 2. 在Long類型中賦值,數值后使用大寫L 3. 不要在一個常量類中維護所有常量,要根據功能分開維護 4. 常量的復用層次: 1.跨應用:放在二方庫中,通常在constant目錄下 2.應用內:放在一方庫中,通常在constant目錄下 3.子工程內:放在當前子工程constant目錄下 4.包內共享常量:當前包下單獨的constant目錄下 5.類內共享常量:直接在類內部private static final定義
5. 如果變量值只在固定的范圍內變化,用enum類型定義
代碼格式
1. 如果大括號代碼為空直接'{}',大括號內有代碼則:左大括號左側不換行,右側換行;右大括號右側換行,左側如果不跟else等代碼換行,否則不換行 2. 小括號和字符之間不能有空格,括號內字符和運算符之間有空格 如:if (a == b) 3. if、for、while、do、switch與括號之間必須有空格 4. 任何二目、三目運算符前后必須有空格 5. 采用4個空格,禁止使用tab 6. 注釋的雙斜線和內容要有空格 7. 強制類型轉換時,右括號與強制轉換值之間不用空格 8. 單行字符不超過120個,超過要換行 9. 方法在定義和傳參時,必須要加空格 10. IDE的text file encoding 設置為UTF-8;IDE中 文件的換行符使用Unix格式 11. 單個方法盡量不超過80行 12. 不同邏輯、不同語義、不同業務之間的代碼插入一個空行分隔符
OOP規約
1. 不用一個類型的對象引用來訪問靜態方法和靜態屬性,直接類名訪問即可 2. 所有覆寫方法,必須加@Override注解 3. 相同業務含義,相同參數類型才能使用java可變參數 4. 外部依賴或者二方庫依賴的接口,不能修改方法簽名。接口過時必須用@Deprecated 注解,並說明新接口或者新服務是什么 5. 不能使用過時的類或者方法 6. Object的equals方法容易拋出空指針,應使用常量或者確定值的對象來調用equals 7. 所有整型包裝類之間的值比較都用equals 方法比較 8. 浮點數之間的等值判斷,基本類型不能用==,包裝類不能用equals。 解決方案:(1) 指定一個誤差范圍,兩個浮點數的差值在此范圍之內,則認為是相等的。 (2) 使用BigDecimal來定義值,再進行浮點數的運算操作。 9. 定義DO類時,屬性類型要數據庫字段類型相匹配 10. 防止精度丟失,禁止使用BigDecimal(double)方式將double對象轉換成BigDecimal。建議使用BigDecimal的valueOf方法 11. 基本類型和包裝類型的使用標准 1.所有POJO的屬性必須用包裝類型 2.RPC方法的參數和返回值必須使用包裝類型 3.所有局部變量使用基本變量 12. 所有POJO 不要對其屬性設置默認值 13. 序列化類新增時不要修改其serialVersionUID字段 14. 構造方法里禁止加任何業務處理邏輯,有要加在init() 15. POJO類必須要寫toString方法 16. 禁止在POJO類中對屬性xxx 同時存在isXxx()和getXxx() 17. 使用索引訪問用String的split方法得到數組時,需要對最后一個分隔符有無內容做檢查 18. 一個類有多個構造方法或者多個同名方法,要按照順序來。 19. 類中的方法順序 :共有方法-> 私有方法 -> get/set 20. setter方法中參數名稱和成員變量名稱一致,不要在getter和setter方法中加業務邏輯 21. 循環體內用StringBuilder的append方法進行擴展 22. final可以修飾類,方法,變量。 23. 慎用Object的clone方法 24. 類成員與方法訪問控制從嚴 1) 如果不允許外部直接通過new來創建對象,那么構造方法必須是private。 2) 工具類不允許有public或default構造方法。 3) 類非static成員變量並且與子類共享,必須是protected。 4) 類非static成員變量並且僅在本類使用,必須是private。 5) 類static成員變量如果僅在本類使用,必須是private。 6) 若是static成員變量,考慮是否為final。 7) 類成員方法只供類內部調用,必須是private。 8) 類成員方法只對繼承類公開,那么限制為protected。
注釋規范
1. 類、類屬性、類方法的注釋必須使用Javadoc規范,使用
詳細可參考簡書
阿里巴巴編碼規范(Java) - 簡書 (jianshu.com)