命名
類名使用UpperCamelCase風格。 領域模型相關命名:DO / DTO / VO / DAO等。數據庫
方法名,參數名,成員變量,局部變量都統一使用lowerCamelCase風格。數組
常量名所有大小寫,單詞間用下劃線隔開,不要嫌名字長。安全
抽象類使用Abstract或Base開頭。多線程
異常類命名使用Exception結尾。併發
測試類命名以它要測試的類的名開始,以Test結尾。框架
記住,中括號是數組類型的一部分,String[] args,請勿使用String args[]。dom
POJO類中任何布爾類型的變量,都不要加is,不然部分框架會引發序列化錯誤。異步
枚舉類名建議帶上Enum後綴,枚舉成員名稱須要所有大寫,單詞間用下劃線隔開。工具
Service / DAO層命名規約
- 獲取單個對象用get作前綴。
- 獲取多個對象用list作前綴。
- 獲取統計值的方法用count作前綴。
- 插入方法用save。
- 刪除方法用remove。
- 修改方法用update。
格式規約
- 左打括號前不換行。
- 左大括號後換行。
- 右大括號前換行。
- 有大括號後還有else等代碼則不換行;表示終止右大括號必須換行。
集合處理
- 使用集合轉數組的方法,必須使用集合的toArray(T[] array),傳入的類型徹底同樣的數組,大小是list.size()。
- 使用工具類Array.asList()把數組轉換成集合。
- 不要在foreach循環裏進行元素的remove/add操做。remove元素使用Iterator方式,若是併發操做,須要對Iterator對象加鎖。
Iteator<String> it = a.iterator(); while(it.hasNext()){ String temp = it.next(); if(條件){ it.remove(); } }性能
- 集合初始化,儘可能指定集合初始化大小。
- 使用entrySet遍歷Map集合KV,而不是keySet方式遍歷(keySet方式是遍歷了2次,一次轉換爲Iterator對象,另外一次是從hashMap中取出key對應的value,JDK8,使用Map.foreach方法)。
線程池
- 線程池不容許使用Executors建立,而是經過ThreadPoolExecutor方式,這樣處理方式讓寫的同窗明確線程池運行規則,儘可能避免風險。
- 使用CountDownLatch進行異步轉同步操做,每一個線程退出前必須調用countDown方法,線程執行cache異常,確保countDown方法額能夠執行。
- 避免Random實例被多線程使用,雖然共享該實例是線程安全的,但會因競爭同一個seed致使性能降低。
- 循環體中的語句要考量性能,如下操做盡可能移至循環體外處理,如定義對象,變量,獲取數據庫鏈接,進行沒必要要的try-catch操做。