編碼質量
推薦工具檢測
外掛名稱 | 作用 | 建議程度 |
---|---|---|
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
指的是快取的業務資料的唯一名稱,也可以是多級結構。
日誌記錄儲存原則
日誌首選框架logback
,SpringBoot
預設採用logback
作為日誌框架,無縫整合,最佳的相容與支援。雖然log4j2支援非同步日誌記錄,效能較強。但效能差距不是一個決定性因素,且除了巨量的日誌記錄和極端要求效能的情況下,log4j2的效能與logback效能差距微乎其微。
日誌存放路徑最佳實踐:/opt/logs/${spring.application.name}/${server.port:8080}/out.log