研發規範雜談

EalenXie發表於2024-04-07

編碼質量

推薦工具檢測

外掛名稱 作用 建議程度
IDEA自帶外掛(IDEA Analyze) 編譯器警告 強制
SonarLint 程式碼質量檢查 強制
CodeMetric 程式碼複雜度提醒 建議
MetricsReloaded 程式碼複雜度計算 建議
Alibaba Java Coding Guidelines 程式碼規範 建議/部分規範不建議

程式碼複雜度各項指標

指標項 英文全稱 中文說明
CogC Cognitive Complexity 認知複雜度,即程式碼可讀性
ev(G) Essential Cyclomatic Complexity 基本複雜度
iv(G) Module Design Complexity 模組設計複雜度
v(G) Cyclomatic Complexity 圈複雜度
WMC Weighted methods per class 每個類的加權方法 複雜度

關於Lombok

  • 屬性及方法最小化原則,僅推薦使用@Getter@Setter@Slf4j 註解。
  • JaveBean屬性較多的類禁止使用@Data@Builder@Accessors 靜態構造,鏈式呼叫引發的JavaBean問題
  • 禁止使用@RequiredArgsConstructor+ final 進行Spring的Bean強依賴構造。防止生成複雜構造器,Bean初始化問題等。
  • 不建議使用@SneakyThrows註解。使用該註解會將受檢異常轉換為非受檢異常,但在轉換過程中會丟失原始異常的型別資訊。破壞了異常處理的語義,可能導致不可控的程式行為。

IDEA推薦外掛

  • GitToolBox
  • MybatisX
  • Maven Helper
  • GenerateAllSetter
  • GsonFormatPlus
  • Statistic

歸檔原則

OSS檔案歸檔原則

  • 臨時檔案:/temp/{profile}/{bizKey}[/bizId]/{fileName}
  • 正常檔案:/public/{profile}/{bizKey}[/bizId]/{fileName}
  • 私有檔案:/private/{profile}/{bizKey}[/bizId]/{fileName}

GIT分支歸檔原則

  • 功能迭代分支:feature/xxx
  • 修復分支:hotfix/xxx(線上緊急)或者fix/xxx(開發測試)
  • 最佳化、重構分支 :optimize/xxx

快取,分散式鎖的KEY原則

原則上redis的key命名應該全部小寫,並且使用:作為key的分隔符。 除極端特殊情況外所有的Redis資料都應該有過期時間設定

  • 鎖:lock:{BIZ_KEY}[:BIZ_ID] 注意:BIZ_KEY也可以是多級結構。
  • 快取:cache:{BUSI_DATA_NAME}[:BIZ_ID]注意:BUSI_DATA_NAME指的是快取的業務資料的唯一名稱,也可以是多級結構。

日誌記錄儲存原則

日誌首選框架logbackSpringBoot預設採用logback作為日誌框架,無縫整合,最佳的相容與支援。雖然log4j2支援非同步日誌記錄,效能較強。但效能差距不是一個決定性因素,且除了巨量的日誌記錄和極端要求效能的情況下,log4j2的效能與logback效能差距微乎其微。

日誌存放路徑最佳實踐:/opt/logs/${spring.application.name}/${server.port:8080}/out.log

相關文章