碼出高效,碼出質量:雲棲大會的阿里Java開發手冊最新版正式釋出!
"這是凝聚了阿里眾多Java開發人員多年經驗的Java開發手冊,強烈推薦Java程式設計師們看看,裡面的很多規則甚至是多次慘痛的故障經驗才形成的,另外在規則上諸如空格,命名等規範,很容易形成爭論,但對於一家公司而言,最重要的是要有統一規範(所以有些時候沒必要太糾結),對於程式碼的可讀性和可維護性來說會有巨大幫助。"
總之話不多說,學了至少能懂得Java的規則。一種傳統。
最新完整版pdf點選可以下載。
總結:
OOP規約
1、所有的覆寫方法,必須加@override註解
2、不能使用過時的類
3、所有的POJO類屬性必須使用包裝資料型別(null)
不用設定預設值,getter/setter不要加邏輯
4、序列化類新增屬性時,請不要修改serialVersionUID
5、宣告final的情況:
a、不需要重新賦值的變數
b、物件引數不允許修改指向
c、類方法不允許被重寫
6、物件的clone方法預設是淺拷貝
淺拷貝:只複製一個物件,物件內部存在的指向其他物件陣列或者引用則不復制
深拷貝:物件,物件內部的引用均複製
集合處理
1、必須重寫equals和hashCode:a、set儲存的物件 b、自定義物件作為map的鍵
2、array = list.toArray(new T[list.size()])
3、不要在foreach迴圈裡進行元素的remove和add操作,remove請用Iterator
4、如果倒序的遍歷,中間即使有刪除也不會漏掉元素
5、集合初始化時,儘量指定集合初始值大小
6、使用entrySet遍歷Map類集合KV,keySet其實是遍歷了兩次,一次是轉為Iterator,一次是從hashMap取值??
併發處理
1、建立執行緒(池)時,請指定有意義的執行緒名稱
2、執行緒池不允許使用Executors去建立,通過ThreadPoolExecutor
3、使用ThreadLocal代替原來的new SimpleDateFormat
private static final ThreadLocal<SimpleDateFormat> dateFormatter = new ThreadLocal<SimpleDateFormat>(){
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
4、能用物件鎖,不要用類鎖
5、Timer執行多個TimeTask時,只要一個沒捕獲異常,其它任務便會自行終止,使用ScheduledExecutorService
6、HashMap在容量不夠時進行resize,由於高併發可能出現死鏈,導致CPU飆升
其它
1、POJO類中布林型別的變數,都不要加is
2、列舉類構造方法被預設強制是私有
3、POJO是DO/DTO/BO/VO的統稱,禁止命名成xxxPOJO
4、運算子與下文一起換行
5、邏輯超過三層的,狀態模式實現
6、try-with-resources都是一個能夠確保資源能被正確地關閉的強大方法(JDK7)
7、不能在finally塊中使用return
8、日誌使用佔位符
logger.debug("Processing trade with id:{} symbol:{}", id, symbol)