原文鏈接: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開發手冊