阿里巴巴 Java 開發手冊(筆記)

【命名規約】
抽象類命名使用Abstract或者Base開頭
測試類名使用Test結尾
如果使用到了設計模式,在類名中體現具體的模式 OrderFactory LonginProxy


【常量定義】
long類型的初始賦值必須使用大寫的L
使用專門的類來維護常量ConfigConsts
包裝類全部使用equals判斷
所有P0JO類屬性必須使用包裝數據類型.
定義POJO時不要定義默認值;
構造函數不要加入任何的邏輯 如需要加入放在init方法中
final可提高程序的響應效率
任何類、方法、參數、變量需要控制訪問範圍,過於寬泛的範圍訪問不利於模塊的解耦。




【集合處理】
只要重寫equals 就必須重寫hashCode
如果自定義對象作爲Map的鍵,那麼必須重寫hashCode和equals
集合轉數組 必須使用帶參傳遞 以防出現classCastException錯誤
ConcurrentHashMap key value均不允許爲null;




【併發處理】
線程資源必須通過線程池提供,如果不使用有可能造成系統創建大量同類線程而
導致消耗完內存或者過度切換的問題。
線程池必須使用ThreadPoolExecutor去創建,這樣的目的是規避資源耗盡的風險。
高併發時應該考慮鎖的性能損耗,能用無鎖數據結構就不要用鎖,能鎖區域就
不要鎖整體,能用對象鎖就不要用類
對多個資源加鎖,需要保持一致的加鎖順序,否則有可能會造成死鎖.
多線程使用定時任務使用ScheduledExecutorService
CountDownLatch異步轉同步時,需要調用countDown方法。




【循環語句】
if 必須有else;
switch必須有default;
不要在條件判斷中執行其他複雜的語句,將複雜的邏輯判斷的結果賦值給一個有意義的
布爾變量名,以提高可讀性。
Math.random使用netInt專用方法
任何數據結構的構造或初始化都應指定大小,避免吃光內存。
對於明確停止使用的代碼和配置,如方法、變量、類、配置文件、動態配置屬性都應該清理,避免過多的垃圾。


【異常規約】
異常不要用來做流程控制 條件控制 因爲異常的處理效率比條件分支低
只能對不穩定代碼進行try catch,並且對齊進行區別化的處理
finally塊必須對資源對象、流對象進行關閉,有異常也要做try catch
finally 禁止使用return會導致try中禁止執行.
防止NPE問題
自動解箱 Integer爲null轉int
數據庫查詢的值爲null;
集合中有null;
遠程調用返回對象,一律要求NPE
對於Session中獲取的數據,建議NPE
級聯調用Obj.getA().getB().getC()有可能出現NPE對象。


對於公司外的http/api開放接口必須使用"錯誤碼"




【日誌規約】



























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章