原文鏈接:https://liushiming.cn/2020/02/20/keep-same-code-style/
概述
多人在同一個項目協作的時候保持統一的編碼風格很重要。但說起來容易做起來難,每個人都有自己的編碼習慣,不去對比自己都難以意識到。本文我推薦一些做法、工具可以幫助我們盡量保持同樣的風格。
選擇go語言
如果可以,選擇go語言作為編程語言。
go語言自帶代碼格式化命令gofmt,要求所有代碼都有一致的代碼風格,甚至不允許未使用的import和未使用的變量定義在程序里,否則編譯不通過。
go的關鍵字僅25個,是我見過最少的。相比而言,c語言有32個,c++ 49個,python 33個,JavaScript 63個,java 53個。關鍵字精簡大家寫出來的代碼就更趨向於一致。
sonarqube是專門做代碼靜態分析的工具,它內置了一套自己的規則來檢查代碼是否符合規范。就內置的編碼規范來看,go只有46個,Java可能出現的問題或者code smell最多,達到533個,一個團隊要投入多少精力(學習成本、review成本、修改成本)去避免這種編碼規范的問題?長期下來是一個無法忽視的投入。
| 語言 | sonarqube編碼規范 |
|---|---|
| Java | 533 |
| Python | 440 |
| C# | 373 |
| JavaScript | 219 |
| PHP | 185 |
| VB.NET | 144 |
| TypeScript | 129 |
| Flex | 79 |
| HTML | 62 |
| Kotlin | 49 |
| Ruby | 48 |
| Scala | 47 |
| Go | 46 |
| CSS | 30 |
| XML | 16 |
| JSP | 6 |
使用lint插件
lint是一類工具的統稱,即在ide編碼時實時幫你檢查編碼規范的軟件。我推薦Sonarlint和Alibaba java coding guidelines(java only)這兩款插件。在intellij系列的ide上用起來都不錯。lint軟件比ide自帶的代碼風格檢查更嚴格,而且會給問題分嚴重等級。
lint插件會highlight問題代碼,鼠標懸浮可以查看問題概述。

點show inspection description可以查看詳情

自動格式化
在intellij下手動格式化的操作是 Code -> Reformat Code

在一個項目中,如果有的人格式化代碼,有的人不格式化的后果就是git提交后,平白無故會多出很多difference,其實都是格式上的微調,但是會給代碼review帶來不必要的負擔,所以最好大家代碼都是格式化過的

可以在commit的時候勾選先格式化再提交

也可以設置在保存文件時自動觸發格式化操作
intellij preferences -> save actions -> 開啟保存觸發動作 -> 選擇格式化動作

遵守業界規范
堅持高的標准,統一使用業界標桿企業的編碼規范,如
Google Style Guides
Alibaba java開發手冊
