1. 程式人生 > >阿里巴巴 Java 開發手冊(筆記)

阿里巴巴 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開放介面必須使用"錯誤碼"




【日誌規約】