Java雜談之開發規範

【CSDN】:Java雜談之開發規範java

 

  • 1、命名規範
  1. 全部命名不用特殊字符、拒絕使用不規範的縮寫。
  2. 嚴禁使用拼音與英文混搭的方式命名。
  3. 方法名、參數名、成員變量、局部變量:小駝峯(拒絕使用中劃線、下劃線隔開多個單詞的方式)。
  4. 類名:大駝峯(領域模型的命名除外:DTO、DAO等)。
  5. 包名所有使用小寫。
  6. 常量命名所有大寫下劃線隔開,力求語義表達完整清楚。
  7. 抽象類命名使用Abstract或Base開頭(例如:AbstractConStant、BaseService、BaseController)。
  8. 特殊類命名要有特殊標示結尾(例如:攔截類LoginInterceptor、異常捕獲類EnterpriseCommonException)。
  9. 數組類命名統一使用String[] args(不使用C語言風格的命名 String args[] )。
  10. 任何布爾類型的變量不要加is開頭,(例如 isSuccess,生成方法isSuccess(),RPC框架例如Thrift在作反向解析時會映射成變量名success)。
  • 2、常量定義規範
  1. 定義常量類、拒絕使用魔法值。
  2. 常量類應按照複用層次、功能進行歸類.(例如:RedisConstant、ConfigConstant)
  3. final提升響應效率
  • 3、格式規範(code-style定義)
  1. 代碼塊縮進4個空格,若是使用tab縮進,請設置成1個tab爲4個空格
  2. 運算符左右必須使用一個空格(例如:if (flag == 0))
  3. 每行字符數限制不超過120個,超出須要換行(import除外)。運算符、方法調用.放到下一行
  4. 每一個方法要作到小而精,有效代碼儘可能不超過20行。(代碼編寫的15行原則、推薦閱讀《質量·軟件·管理——系統思惟》代碼複雜度與代碼行數的關係)
  • 4、面向對象規範
  1. 可變參數方法必須是相同類型參數、相同業務含義,可變參數放到最後(例如:public Enterprise getEnterprise(String Status,Integer …ids) )
  2. 集合(容器)數據類型初始化儘可能設置合理初始值避免頻繁擴容(例如:Map子類族的哈希碰撞再散列問題、List子類族的複製擴容都很消耗性能)
  3. 包裝類對象值比較使用eques(),切格式必定要使用 「常量」.eques(變量)(Integer包裝類值超出-128至127範圍的對象在堆內存產生,拒絕使用==)
  4. 全部局部變量都應該使用基本數據類型,全部POJO類屬性變量都必須使用包裝類數據類型(涉及到數據庫空數據拆箱)
  5. Java序列化方式,修改類屬性時,必須不能修改serialVersionUID不然形成歷史數據不能反序列化(例如redis緩存數據的反序列化)。
  6. import 拒絕使用通配符, 例如:import java.util.concurrent.; import com.ikang.enterprise.core.persistence.;
  7. 對可能拋出的異常要及時捕獲,而不是向上一級拋出,捕獲的異常必定要作相應的處理,捕獲異常要用適當的異常類而不是一律用父類Exception。
  8. 使用泛型能夠提升編碼的複用性,可是慎用帶通配符的泛型方法 通配符限制了一些泛型方法的使用,上下邊界通配符使用不當可能引發沒必要要的問題。
  • 5、程序員基本功--避免NPE
  1. 實用對象方法時,先判斷對象非空、參數使用前先判空
  2. 任何NPE問題,或者入庫檢查,都由使用者來保證
  3. 參數重複校驗問題:循環調用的方法不推薦參數校驗,而是註釋調用方外部參數校驗,底層方法能夠不校驗,service層方法強校驗

JavaEE8規範(甲骨文出品)->>點擊下載git

經常使用安全的併發集合類:Concurrent族、寫時複製CopyOnWrite族、阻塞隊列BlockingQueue族程序員

原子類:Atomic族 經常使用的線程池:ThreadPoolExecutor、Executorsgithub

經常使用鎖:Sychronized、ReentrantLock、ReentrantReadWriteLock等,但推薦使用無鎖編程(原子加、環形緩衝區、RCU、CAS)redis

運用第三方類庫能夠有效減小編寫複雜度,同時避免沒必要要的異常,推薦Google Guava數據庫

相關文章
相關標籤/搜索