1. 程式人生 > >碼出高效,碼出質量:雲棲大會的阿里Java開發手冊最新版正式釋出!

碼出高效,碼出質量:雲棲大會的阿里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)