目標說明
統一良好的代碼格式規范可以有效提升開發團隊之間的「協作效率」,如果不同的開發團隊或者開發人員采用不同的代碼格式規范,那么每次Format代碼都會導致大量的變化,在Code Review及Merge代碼時會帶來很多的干擾項。因此制定本代碼規范希望達成以下目標:
- 統一Java代碼格式規范,確保團隊成員間「代碼風格一致」;
- 保證Format代碼時不會引入格式上的干擾;
- 提升團隊協作效率、Code Review效率;
怎么實施
在Java代碼規范方面目前Google Java Code Style在業界使用得比較廣泛。它的優點如下:
- 業界比較通用;
- 有比較完善的自動化校驗工具及checkstyle配置文檔;
為了滿足「代碼的美感」,借鑒其他公司的定制經驗,根據馬蜂窩的內部需求,我們進行了一些小的定制,具體變化如下:
-
修改intellij-java-google-style.xml中的內容:
-
INDENT_SIZE 2 4 行縮進 TAB_SIZE 2 4 TAB縮進 CONTINUATION_INDENT_SIZE 4 8 換行縮進 RIGHT_MARGIN 100 120 單行的長度 JD_PRESERVE_LINE_FEEDS 無 true 注釋中保留手動的換行 KEEP_LINE_BREAKS 無 true Java代碼中,保留手動的換行
- 修改intellij-java-google-style.xml文件下載:
使用方式
使用代碼規范主要干兩件事:
- 代碼格式化,可以實現自動化的代碼格式化操作;
- 代碼校驗,代碼格式的自動校驗;
代碼格式化
1)、先下載上面的「intellij-java-google-style.xml」文件保存至本地目錄;
2)、設置配置文件,路徑:IntelliJ IDEA → Preference → Editor → Code Style,如下圖所示:
3)、選擇intellij-java-google-style.xml文件所在位置,選擇OK
配置完code style后,在Mac下使用IntelliJ IDEA進行代碼格式化,快捷鍵為「option+command+L」。
代碼自動校驗
- 有了統一風格的代碼格式,只是從基本格式上約定了大家的代碼樣式,而關於Java代碼的編寫規范由於每個人的習慣、代碼編寫經驗都不相同,因此寫出來的代碼在類的命名規范、設計方面也會有很多的不同,而這也會影響到代碼的整體質量。
- 為了更好地規范大家的編程行為,可以通過IntelliJ IDEA插件的方式,實現代碼的自動化檢查節省人力(PS:螞蟻、快手、摩拜等公司在團隊開發過程中都在使用CheckStyle進行自動化代碼檢查)。
- 參考目前市面上最有影響力的Java編程規范當屬阿里推出的《阿里巴巴Java開發手冊》,目前該手冊已經成為很多團隊的開發標准。下載鏈接:阿里巴巴Java開發手冊終極版v1.3.0.pdf
- 比較方便的是基於該手冊已經開發了IntelliJ IDEA插件,可以在寫代碼時實時對常見的代碼書寫錯誤或者可能留坑的地方進行提示,非常有用。
接下來通過截圖的方式演示如何使用「Alibaba Java Code Guidelines插件」進行代碼校驗:
安裝Alibaba Java Code Guidelines插件
可以通過直接通過Jetbrians官方倉庫安裝,由於網絡關系,這里選擇手工安裝方式
1)、下載最新版本「Alibaba Java Coding Guidelines插件」
http://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines/versions
2)、IntelliJ IDEA → Preference→Plugins,選擇「install Plugin from Disk...」
完成后,選擇重啟IntelliJ IDEA。
3)、重啟后選擇Tools就看到插件了,這里我們選擇「切換語言至英文」,再次重啟IntelliJ IDEA
使用插件實施代碼檢測
目前該插件的代碼檢測模式有兩種:實施檢測、手動觸發。
實時檢測
實時檢測功能在開發過程中對當前文件進行檢測,並以高亮的形式提示出來,例如定義一個錯誤命名的抽象類,提示如下:
該功能默認開啟,也可以通過配置關閉,建立大家保持開啟狀態,以時刻矯正自己!有些規則也實現了Quick Fix功能,可以通過快捷鍵「Option+Enter」呼出Intention菜單,不同的規則會提示不同信息的Quick Fix按鈕。
代碼掃描
可以通過右鍵菜單、Toolbar按鈕、快捷鍵三種方式手動觸發代碼檢測。
例如,對某個代碼文件進行規約檢測:
也可以對整個項目進行規約掃描,例如:
掃描結果如下:
代碼提交檢測
在代碼提交時也可以進行檢測設置,如下:
這樣提交時也會進行規約檢測(ps:關於是否提交時重新格式化代碼,建議在編寫代碼的同時進行格式化,而不要在這里進行格式化)!
QA
1、如何對項目整體進行代碼Format?
選中要Format的代碼目錄,快捷鍵"option+command+L"。
2、設置Save Actions代碼保存時自動格式化
為了方便時時刻刻都執行代碼格式化操作,這里設置IDEA Save Actions功能,具體步驟如下:
1)、安裝Save Actions插件,如下圖所示:
2)、打開設置,找到Save Actions設置,勾選如下圖所示三個復選框,這樣每次保存代碼時就能自動進行格式化,並且還會去掉無用import引入
參考資料:
https://github.com/alibaba/p3c/blob/master/idea-plugin/README_cn.md