1. 程式人生 > >推薦4款個人珍藏的IDEA外掛!幫你寫出不那麼差的程式碼

推薦4款個人珍藏的IDEA外掛!幫你寫出不那麼差的程式碼

@[toc] 目前的話,我(Guide哥)是在 Github 開源了兩個輪子,一個簡易的 RPC 框架,一個輕量級的 HTTP 框架。程式碼結構清晰,實現優雅(這個自誇就很不要臉),感興趣的小夥伴可以看一下。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190054329-1515482775.png) 在寫程式碼的時候,有幾個 IDEA 外掛對於我規範程式碼以及更高效地完成編碼工作有奇效。 那今天就簡單聊聊我平時寫程式碼過程中,有哪些 IDEA 外掛對我幫助最大吧! ## Codota:程式碼智慧提示 我一直在用的一個外掛,可以說非常好用了(*我身邊的很多大佬平時寫程式碼也會用這個外掛*)。 Codota 這個外掛用於智慧程式碼補全,它基於數百萬Java程式,能夠根據程式上下文提示補全程式碼。相比於IDEA自帶的智慧提示來說,Codota 的提示更加全面一些。 如果你覺得 IDEA 外掛安裝的太多比較卡頓的話,不用擔心!Codota 外掛還有一個對應的線上網站([https://www.codota.com/code](https://www.codota.com/code)),在這個網站上你可以根據程式碼關鍵字搜尋相關程式碼示例,非常不錯! 我在工作中經常會用到,說實話確實給我帶來了很大便利,比如我們搜尋 `Files.readAllLines`相關的程式碼,搜尋出來的結果如下圖所示: ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190055197-971556090.png) 另外,Codota 外掛的基礎功能都是免費的。你的程式碼也不會被洩露,這點你不用擔心。 簡單來看看 Codota 外掛的騷操作吧! ### 程式碼智慧補全 我們使用`HttpUrlConnection ` 建立一個網路連線是真的樣的: ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190056496-398351097.gif) 我們建立執行緒池現在變成下面這樣: ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190057750-1605018579.gif) 上面只是為了演示這個外掛的強大,實際上建立執行緒池不推薦使用這種方式, 推薦使用 `ThreadPoolExecutor` 建構函式建立執行緒池。我下面要介紹的一個阿里巴巴的外掛-**Alibaba Java Code Guidelines** 就檢測出來了這個問題,所以,`Executors`下面用波浪線標記了出來。 ### 程式碼智慧搜尋 除了,在寫程式碼的時候智慧提示之外。你還可以直接選中程式碼然後搜尋相關程式碼示例。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190058074-1548370696.png) ## Alibaba Java Code Guidelines:阿里巴巴 Java 程式碼規範 阿里巴巴 Java 程式碼規範,對應的Github地址為:[https://github.com/alibaba/p3c](https://github.com/alibaba/p3c ) 。非常推薦安裝! 安裝完成之後建議將與語言替換成中文,提示更加友好一點。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190058785-1515173002.png) 根據官方描述: > 目前這個外掛實現了開發手冊中的的53條規則,大部分基於PMD實現,其中有4條規則基於IDEA實現,並且基於IDEA [Inspection](https://www.jetbrains.com/help/idea/code-inspection.html)實現了實時檢測功能。部分規則實現了Quick Fix功能,對於可以提供Quick Fix但沒有提供的,我們會盡快實現,也歡迎有興趣的同學加入進來一起努力。 目前外掛檢測有兩種模式:實時檢測、手動觸發。 上述提到的開發手冊也就是在Java開發領域赫赫有名的《阿里巴巴Java開發手冊》。 ### 手動配置檢測規則 你還可以手動配置相關 inspection規則: ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190059458-123822194.png) ### 使用效果 這個外掛會實時檢測出我們的程式碼不匹配它的規則的地方,並且會給出修改建議。比如我們按照下面的方式去建立執行緒池的話,這個外掛就會幫我們檢測出來,如下圖所示。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190059876-260929337.png) 這個可以對應上 《阿里巴巴Java開發手冊》 這本書關於建立執行緒池的方式說明。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190100296-1598656479.png) ## CheckStyle: Java程式碼格式規範。 ### 為何需要CheckStyle外掛? **CheckStyle 幾乎是 Java 專案開發必備的一個外掛了,它會幫助我們檢查 Java 程式碼的格式是否有問題比如變數命名格式是否有問題、某一行程式碼的長度是否過長等等。** 在專案上,**通過專案開發人員自我約束來規範程式碼格式必然是不靠譜的!** 因此,我們非常需要這樣一款工具來幫助我們規範程式碼格式。 如果你看過我寫的輪子的話,可以發現我為每一個專案都集成了 CheckStyle,並且設定了 **Git Commit 鉤子**,保證在提交程式碼之前程式碼格式沒有問題。 > **Guide哥造的輪子**(*程式碼簡潔,結構清晰,歡迎學習,歡迎一起完善*): > > 1. [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) :A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基於 Netty+Kyro+Zookeeper 實現的自定義 RPC 框架-附詳細實現過程和相關教程) > 2. [jsoncat](https://github.com/Snailclimb/jsoncat) :仿 Spring Boot 但不同於 Spring Boot 的一個輕量級的 HTTP 框架 > > **Git 鉤子**: Git 能在特定的重要動作比如commit、push發生時觸發自定義指令碼。 鉤子都被儲存在 Git 目錄下的 `hooks` 子目錄中。 也即絕大部分專案中的 `.git/hooks` 。 ### 如何在Maven/Gradle專案中整合 Checksytle? 一般情況下,我們都是將其整合在專案中,並設定相應的 Git 鉤子。網上有相應的介紹文章,這裡就不多提了。 如果你覺得網上的文章不直觀的話,可以參考我上面提到了兩個輪子: 1. [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) :Maven專案整合 Checksytle。 2. [jsoncat](https://github.com/Snailclimb/jsoncat) :Gradle專案整合 Checksytle。 如果你在專案中集成了 Checksytle 的話,每次檢測會生成一個 HTML格式的檔案告訴你哪裡的程式碼格式不對,這樣看著非常不直觀。通過 Checksytle外掛的話可以非常直觀的將專案中存在格式問題的地方顯示出來。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190100672-1947671599.png) 如果你只是自己在本地使用,並不想在專案中整合 Checksytle 的話也可以,只需要下載一個 Checksytle外掛就足夠了。 ### 如何安裝? 我們直接在 IDEA 的外掛市場即可找到這個外掛。我這裡已經安裝好了。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190101101-496936869.png) 安裝外掛之後重啟 IDEA,你會發現就可以在底部選單欄找到 CheckStyle 了。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190101679-56978397.png) ### 如何自定義檢測規則? 如果你需要自定義程式碼格式檢測規則的話,可以按照如下方式進行配置(你可以匯入用於自定義檢測規則的`CheckStyle.xml`檔案)。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190102229-1625306474.png) ### 使用效果 配置完成之後,按照如下方式使用這個外掛! ![run-check-style](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190102798-513895438.png) 可以非常清晰的看到:CheckStyle 外掛已經根據我們自定義的規則將專案中的程式碼存在格式問題的地方都檢測了出來。 ## SonarLint:幫你優化程式碼 SonarLint 幫助你發現程式碼的錯誤和漏洞,就像是程式碼拼寫檢查器一樣,SonarLint 可以實時顯示出程式碼的問題,並提供清晰的修復指導,以便你提交程式碼之前就可以解決它們。 ![](https://img2020.cnblogs.com/other/1843652/202010/1843652-20201021190103984-424608148.png) 並且,很多專案都集成了 SonarQube,SonarLint 可以很方便地與 SonarQube 整合。 ## 我的開源專案推薦 1. [JavaGuide](https://github.com/Snailclimb/JavaGuide) :「Java學習+面試指南」一份涵蓋大部分Java程式設計師所需要掌握的核心知識。準備 Java 面試,首選 JavaGuide! 2. [guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) :A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基於 Netty+Kyro+Zookeeper 實現的自定義 RPC 框架-附詳細實現過程和相關教程) 3. [jsoncat](https://github.com/Snailclimb/jsoncat) :仿 Spring Boot 但不同於 Spring Boot 的一個輕量級的 HTTP 框架 4. [programmer-advancement](https://github.com/Snailclimb/programmer-advancement) :程式設計師應該有的一些好習慣+面試必知事項! 5. [springboot-guide](https://github.com/Snailclimb/springboot-guide) :Not only Spring Boot but also important knowledge of Spring(不只是SpringBoot還有Spring重要知識點) 6. [awesome-java](https://github.com/Snailclimb/awesome-java) :Collection of awesome Java project on Github(Github 上非常棒的 Java 開源專案集合). [我是 Guide 哥,一 Java 後端開發,會一點前端,自由的少年。我們下期再見!微信搜“**JavaGuide**”回覆“**面試突擊**”領取我整理的 4 本原創PDF](https://www.yuque.com/docs/share/71251673-1fef-416e-93d7-489a25a9eda5?#%20%E3%80%8A%E8%B5%B0%E8%BF%91JavaGuide%E3%80%8B) [我是 Guide 哥,一 Java 後端開發,會一點前端,自由的少年。我們下期再見!微信搜“**JavaGuide**”回覆“**面試突擊**”領取我整理的 4 本原創PDF](https://www.yuque.com/docs/share/71251673-1fef-416e-93d7-489a25a9eda5?#%20%E3%80%8A%E8%B5%B0%E8%BF%91JavaGuide%E