失效鏈接處理 |
唯品會Java開發手冊 1.0.2版本 PDF 下載
本站整理下載:
提取碼:johk
相關截圖:
![]() 主要內容:
1. 概述 《阿?巴巴Java開發?冊》,是 個對外公布的企業級Java開發?冊,對整個業界都有重要的意義。 我們結合唯品會的內部經驗,參考《Clean Code》、《Effective Java》等重磅資料,增補了?些條?,也做 了些精簡。 感謝阿?授權我們定制和再發布。 2. 規范正? 4. 命名規約 5. 格式規約 6. 注釋規約 7. 法設計 9. 類設計 :. 控制語句 <. 基本類型 =. 集合處理 >. 并發處理 42. 異常處理 44. ?志規約 45. 其他設計 注意: 如需全?pdf版,請下載源碼,在docs/standard/?錄運?merge.sh?成。 3. 規范落地 規則落地主要依靠代碼格式模版與Sonar代碼規則檢查。 其中Sonar規則不如?意的地 ,我們進?了定制。 Eclipse/Intellij 格式模板 Sonar 規則修改示例 4. 參考資料 《Clean Code》 《Effective Java 2nd》 《SEI CERT Oracle Coding Standard for Java》(在線版) Sonar Java Rules 5. 定制記錄 《唯品會Java開發?冊》-與阿??冊的?較?學I 阿??冊的增補與刪減記錄
vip-java-standard.md 10/30/2020
2 / 48
(?) 命名規約 Rule 1. 【強制】禁?拼?縮寫,避免閱讀者費勁猜測;盡量不 拼?,除?中國式業務詞匯沒有通 易懂的 英?對應。 禁?: DZ[打折] / getPFByName() [評分] 盡量避免:Dazhe / DaZhePrice
Rule 2. 【強制】禁?使 ?標準的英?縮寫 反例: AbstractClass 縮寫成 AbsClass;condition 縮寫成 condi。 Rule 3. 【強制】禁 其他編程語??格的前綴和后綴 在其它編程語?中使 的特殊前綴或后綴,如_name, name_, mName, i_name,在Java中都不建議使 。 Rule 4. 【推薦】命名的好壞,在于其“模糊度” 1)如果上下?很清晰,局部變量可以使 list 這種簡略命名, 否則應該使 userList 這種更清晰的命 名。2)禁? a1, a2, a3 這種帶編號的沒誠意的命名 式。 3) 法的參數名叫 bookList , 法?的局部變量名叫 theBookList 也是很沒誠意。 4)如果?個應 ?同時存在 Account、AccountInfo、AccountData 類,或者?個類?同時有
getAccountInfo()、getAccountData(), save()、 store() 的函數,閱讀者將?常困惑。 5) callerId 與 calleeId, mydearfriendswitha 與 mydearfriendswithb 這種拼寫極度接近,考 驗閱讀者眼?的。 Rule 5. 【推薦】包名全部?寫。點分隔符之間盡量只有?個英語單詞,即使有多個單詞也不使 下劃線或? ?寫分隔 正例: com.vip.javatool
反例: com.vip.java_tool, com.vip.javaTool
Sonar-120{Package names should comply with a naming convention
vip-java-standard.md 10/30/2020
3 / 48
Rule 6. 【強制】類名與接?名使 UpperCamelCase?格,遵從駝峰形式 Tcp, Xml等縮寫也遵循駝峰形式,可約定例外如:DTO/ VO等。 正例:UserId / XmlService / TcpUdpDeal / UserVO
反例:UserID / XMLService / TCPUDPDeal / UserVo
Sonar-101{Class names should comply with a naming convention Sonar-114{Interface names should comply with a naming convention Rule 7. 【強制】 法名、參數名、成員變量、局部變量使 lowerCamelCase?格,遵從駝峰形式 正例: localValue / getHttpMessage();
Sonar-100{Method names should comply with a naming convention Sonar-116{Field names should comply with a naming convention Sonar-117{Local variable and method parameter names should comply with a naming convention Rule 8. 【強制】常量命名全?寫,單詞間 下劃線隔開。?求語義表達完整清楚,不要嫌名字? 正例: MAX_STOCK_COUNT
反例: MAX_COUNT
例外:當?個static final字段不是?個真正常量,?如不是基本類型時,不需要使 ?寫命名。
private static final Logger logger = Logger.getLogger(MyClass.class); 例外:枚舉常量推薦全?寫,但如果歷史原因未遵循也是允許的,所以我們修改了Sonar的規則。 Sonar-115{Constant names should comply with a naming convention Sonar-308{Static non-final field names should comply with a naming convention Rule 9. 【推薦】如果使 到了通 的設計模式,在類名中體現,有利于閱讀者快速理解設計思想 正例:OrderFactory, LoginProxy ,ResourceObserver
vip-java-standard.md 10/30/2020
4 / 48
Rule 10. 【推薦】枚舉類名以Enum結尾; 抽象類使 Abstract或Base開頭;異常類使 Exception結尾; 測試類以它要測試的類名開始,以Test結尾 正例:DealStatusEnum, AbstractView,BaseView, TimeoutException,
UserServiceTest
Sonar-2166{Classes named like "Exception" should extend "Exception" or a subclass Sonar-3577{Test classes should comply with a naming convention Rule 11. 【推薦】實現類盡量 Impl的后綴與接?關聯,除了形容能?的接? 正例:CacheServiceImpl 實現 CacheService接?。 正例: Foo 實現 Translatable接?。 Rule 12. 【強制】POJO類中布爾類型的變量名,不要加is前綴,否則部分框架解析會引起序列化錯誤 反例:Boolean isSuccess的成員變量,它的GET 法也是isSuccess(),部分框架在反射解析的 時候,“以為”對應的成員變量名稱是success,導致出錯。 Rule 13. 【強制】避免成員變量, 法參數,局部變量的重名復寫,引起混淆 類的私有成員變量名,不與?類的成員變量重名 法的參數名/局部變量名,不與類的成員變量重名 (getter/setter例外) 下?錯誤的地 ,Java在編譯時很坑?的都是合法的,但給閱讀者帶來極?的障礙
|