Java代碼開發質量規范
一. 為什么需要代碼質量規范
1. 代碼質量不規范的影響
新手開發
新手在學習和開發過程中,不可避免的會發生一些莫名其妙的問題;
憑習慣編寫代碼,后續再重構優化代碼,重走舊路,延緩了開發能力的提高。
2. 代碼不止是運行
無論哪個開發都自認為自己的代碼是完美易懂的,不需優化的,認為其他開發者的代碼都是有優化
空間,或者需要重構的,或者邏輯有問題。
3. 代碼漏洞
實現功能代碼過程中,有場景丟失,測試遺漏,導致發布正式環境后有隱患。
4. 性能影響
單個測試運行正常,壓力測試就不通過,內存和CPU都增長迅速。
5. 無用、無效代碼
不斷的迭代后,有部分代碼不會用到,代碼越來越多,影響應用的構建。
6. 一個方法或者一個類超長。
類或者方法摻雜了其他功能實現,代碼長,變成了上帝類,不利于后續的優化擴展復用。
2. 代碼質量規范的好處
新手開發快速成長
俗話說三歲定八十,壞習慣很容易養成,以后就積習難改;好習慣就需要持之以恒才可以形成。
功能實現大家都會,但是如何高效、高擴展的實現就需要高質量的代碼。堅持高質量的代碼,對以 后的工作受益匪淺。
2. 利于開發的能力提高;
3. 利于后續代碼的擴展和維護;
4. 利于應用的高可用;
5. 利于降低代碼的成本;
6. 利于提高開發效率。
二. 有哪些代碼質量規范的工具
SonarLint
SonarLint 是一個免費的開源IDE 擴展,可識別并幫助您在編寫代碼時解決質量和安全問題。像拼寫檢查器一樣,SonarLint 會顯示缺陷并提供實時反饋和清晰的修復指導,以便從一開始就提供干凈的代碼。Sonar從一個質量數據報告工具,轉變成為的代碼質量管理平臺,主要特點如下:
代碼覆蓋:通過單元測試,將會顯示哪行代碼被選中;
改善編碼規則;
搜尋編碼規則:按照名字,插件,激活級別和類別進行查詢;
項目搜尋:按照項目的名字進行查詢;
對比數據:比較同一張表中的任何測量的趨勢。
2. Alibaba Java Coding Guidelines
阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代碼規約掃描)。專注于Java代碼規范,而且默認采用中文。
插件提供地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines
插件在掃描代碼后,將不符合規約的代碼按Blocker/Critical/Major三個等級顯示在下方,甚至在IDEA上,還基于Inspection機制提供了實時檢測功能,編寫代碼的同時也能快速發現問題所在。對于歷史代碼,部分規則實現了批量一鍵修復的功能,提升代碼質量,提高團隊研發效能,是很有必要的。
三. 代碼質量規范工具的使用
我們以IDEA開發工具為例。
SonarLint
1.1 安裝
安裝路徑:打開Preferences>>左邊的plugins>>右邊選擇Marketplace>>輸入框中輸入sonar,回車開始搜索。
點擊左邊的 Install 按鈕,開始安裝,等安裝后,需要重啟IDEA。
安裝成功后,plugins的Installed頁面中左邊就有插件。
1.2 使用
可以選擇某個類、某個包、某個應用,右鍵點擊,選擇SonarLint。
1.3 檢測結果
掃描代碼的結果有5個等級:阻斷(Blocker)>>嚴重(Critical)>>主要(Major)>>次要(Minor)>>提示(Info)
阻斷和漏洞是必須整改,其他的優先級不高,但也需要消滅的。
這個是提示switch中的某個case少了break。學習開發過程中,switch中每個case都需要break,如果2個case的處理邏輯是一樣的,就將2個case緊接著寫即可。
2. Alibaba Java Coding Guidelines
2.1 安裝
安裝路徑:打開Preferences>>左邊的plugins>>右邊選擇Marketplace>>輸入框中輸入alibaba,回車開始搜索。
重啟IDEA,安裝成功。
右鍵點擊文件或者包名或者應用名稱,可以看到編碼規約掃描。
四. 總結
我們在前期開發過程中,當某個任務開發完成,雖然代碼量少,也可以運行代碼質量檢查工具,對代碼進行檢測,避免上線后再修改,降低維護成本。另外在后續的開發中,形成良好習慣,可以提高代碼的質量規范。對每個掃描結果,都有整改建議和例子。高質量、高性能的代碼,可以獲得同事、上司的青睞。

相關推薦HOT
更多>>
xml解析器
SAX解析器:基于事件驅動的解析器,逐行讀取XML文件并觸發相應的事件,適用于處理大型XML文件,但需要手動編寫事件處理器來處理XML文件中的數據...詳情>>
2023-03-21 16:03:51
java全局變量
如果全局變量是一個對象,則可以更改該對象的狀態,即使變量本身是final類型。當一個方法被調用時,會為該方法在棧上分配一塊內存空間,用于存...詳情>>
2023-03-17 10:01:40
帶你手把手解決Java常見Bug
剛開始學習Java語言的小伙伴, 很可能被各種各樣的程序bug搞得焦頭爛額, 甚至被勸退。別怕,小編將手把手帶你了解Java中的異常體系, 如何識別Bug...詳情>>
2023-03-13 16:05:00
JavaScript 內的 this 指向
在 javascript 語言中, 有一個奇奇怪怪的 "關鍵字" 叫做 this詳情>>
2023-03-07 15:21:00