阿里編程規范


 

命名風格

 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規范,使用/**內容*/格式,不得使用// xxx方式 2. 所有的抽象方法(包括接口中的方法)必須要用Javadoc注釋、除了返回值、參數、異常說明外,還必須指出該方法做什么事情,實現什么功能 3. 所有的類都必須添加創建者和創建日期 4. 方法內部單行注釋,在被注釋語句上方另起一行,使用//注釋。方法內部多行注釋使用/* */注釋,注意與代碼對齊 5. 所有的枚舉類型字段必須要有注釋,說明每個數據項的用途 6. 與其“半吊子”英文來注釋,不如用中文注釋把問題說清楚。專有名詞與關鍵字保持英文原文即可。 7. 代碼修改的同時,注釋也要進行相應的修改,尤其是參數、返回值、異常、核心邏輯等的修改 8. 謹慎注釋掉代碼。在上方詳細說明,而不是簡單地注釋掉。如果無用,則刪除。 9. 對於注釋的要求:第一、能夠准確反映設計思想和代碼邏輯;第二、能夠描述業務含義,使別的程序員能夠迅速了解到代碼背后的信息。完全沒有注釋的大段代碼對於閱讀者形同天書,注釋是給自己看的,即使隔很長時間,也能清晰理解當時的思路;注釋也是給繼任者看的,使其能夠快速接替自己的工作。 10. 好的命名、代碼結構是自解釋的,注釋力求精簡准確、表達到位。避免出現注釋的一個極端:過多過濫的注釋,代碼的邏輯一旦修改,修改注釋是相當大的負擔 11. 特殊注釋標記,請注明標記人與標記時間。注意及時處理這些標記,通過標記掃描,經常清理此類標記。線上
詳細可參考簡書  阿里巴巴編碼規范(Java) - 簡書 (jianshu.com)
 
 


免責聲明!

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



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