阿里編碼規範總結

編程規約

  • 一方庫、二方庫、三方庫

    • 一方庫:本工程內部子項目模塊依賴的庫(jar 包)。
    • 二方庫:公司內部發布到中央倉庫,可供公司內部其它應用依賴的庫(jar 包)。
    • 三方庫:公司之外的開源庫(jar 包)。
  • DO、DTO、BO、VO

    • DO: 與數據表對應的實體類, xxxDO,xxx即爲數據表名
    • DTO: 數據傳輸對象,service層向外傳輸數據的對象, xxxDTO,xxx爲業務領域相關的名稱
    • BO: 業務對象,由Service層輸出的封裝業務邏輯的對象
    • VO: 顯示層對象,通常是Web向模板渲染引擎層傳輸的對象, xxxVO,xxx一般爲網頁名稱
  • RPC: 遠程調用框架

    • RPC 的方法參數和返回值必須使用包裝類型
  • 集合轉數組

    • 必須使用集合的 toArray(T[] array),傳入的是類型完全一
      致、長度爲 0 的空數組
    List<String> list = new ArrayList<>(2);
    list.add("guan");
    list.add("bao");
    String[] array = list.toArray(new String[0]);
    
  • 集合有序(sort)和穩定性(order)有序性是指遍歷的結果是按某種比較規則依次排列的。穩定性指集合每次遍歷的元素次序是一定

    • ArrayList 是 order/unsort
    • HashMap 是 unorder/unsort
    • TreeSet 是 order/sort
  • Map 類集合 K/V 能不能存儲 null 值的情況

    集合類 Key Value Super 說明
    Hashtable 不允許爲 null 不允許爲 null Dictionary 線程安全
    ConcurrentHashMap 不允許爲 null 不允許爲 null AbstractMap 鎖分段技術(JDK8:CAS)
    TreeMap 不允許爲 null 允許爲 null AbstractMap 線程不安全
    HashMap 允許爲 null 允許爲 null AbstractMap 線程不安全
  • jdk8新特性

    • 遍歷Map使用Map.forEach
    • 使用 Instant 代替 Date
    • LocalDateTime 代替 Calendar
    • DateTimeFormatter 代替 SimpleDateFormat
    • Optional 類來防止 NPE 問題
  • 註釋

    • 對於暫時被註釋掉,後續可能恢復使用的代碼片斷,在註釋代碼上方,統一規定使用三個斜槓(///)來說明註釋掉代碼的理由

異常與日誌

  • 在調用 RPC、二方包、或動態生成類的相關方法時,捕捉異常必須使用 Throwable
    類來進行攔截
  • 避免重複打印日誌,浪費磁盤空間,務必加 additivity = false
  • 多層條件語句建議使用衛語句、策略模式、狀態模式等方式重構

mysql

  • 表達是與否概念的字段,必須使用 is_xxx 的方式命名,數據類型是 unsigned tinyint(1 表示是,0 表示否),表達邏輯刪除的字段名 is_deleted,1 表示刪除,0 表示未刪除
  • 任何字段如果爲非負數,必須是 unsigned
  • POJO 類中的任何布爾類型的變量,都不要加 is 前綴,所以,需要在設置從 is_xxx到 Xxx 的映射關係
  • 表必備三字段:id, create_time, update_time,其中 id 必爲主鍵,類型爲 bigint unsigned、單表時自增、步長爲 1。create_time, update_time的類型均爲 datetime 類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章