避免使用字符串常量
常量定義儘量使用枚舉
Getter
返回對象屬性時需要考慮對象溢出風險
慎重重寫 Object
類的 clone
方法,注意深拷貝和淺拷貝問題
避免創建單一線程,使用線程池
注意 32 位系統中 long
和 double
類型線程安全
儘量使用 volatile
關鍵字代替鎖實現
使用 JDK 8 引入的 java.time
包下新的日期時間 API 代替之前版本的日期時間 API
儘量使用 final
定義類、屬性和變量
注意開源序列化框架在不同操作系統平臺中的 API 兼容性,如:Google GSON,Alibaba Fastjson
使用 JDK 8 引入的 Optional
類防止 NPE 異常
集合操作儘量使用 JDK 8 Stream API
注意 null
的使用,尤其在方法返回值中,因爲 null
時長會引發歧義
所有 POJO / BEAN / PO / BO / VO 類重寫 toString
方法,方便在發生異常時被日誌框架用於打印出有意義的日誌信息
考慮使用靜態方法代替構造函數
如果構造函數參數很多且有多個重載,考慮使用 Builder
對於實現了 Closable
接口的資源,儘量使用 JDK 7 引入的 try-with-resource
代替 try-finally
系統內部使用異常代替返回非法標識
捕獲 Exception
時謹慎調用 printStackTrace
方法
如果 DAO 層拋出異常,需要在其上一層捕獲並重新拋出成一個意義更加明確的異常
系統對外接口使用非法標識代替異常拋出