這12款idea插件,能讓你代碼飛起來!
前言
基本上每個程序員都會寫代碼,但寫代碼的速度不盡相同。
為什么有些人,一天只能寫幾百行代碼?
而有些人,一天可以寫幾千行代碼?
有沒有辦法,可以提升開發(fā)效率,在相同的時間內(nèi),寫出更多的代碼呢?
今天我跟大家一起聊聊在idea中,能提升編碼效率的12種插件,希望對大家有所幫助。

1. lombok
之前對lombok還有爭議,到底該不該在項目中使用,為此我還專門寫了一篇文章《迷茫了,我們該不該用lombok?》。
現(xiàn)在新版的idea已經(jīng)內(nèi)置了lombok插件,所以用它是一種趨勢。
我之所以把lombok放在整篇文章的第一個介紹,是因為它真的可以幫我少寫很多代碼,特別是entity、DTO、VO、BO中的。
我們用User類舉例,以前定義javabean需要寫如下代碼:
public?class?User?{
????private?Long?id;
????private?String?name;
????private?Integer?age;
????private?String?address;
????public?User()?{
????}
????public?User(Long?id,?String?name,?Integer?age,?String?address)?{
????????this.id?=?id;
????????this.name?=?name;
????????this.age?=?age;
????????this.address?=?address;
????}
????public?Long?getId()?{
????????return?id;
????}
????public?String?getName()?{
????????return?name;
????}
????public?Integer?getAge()?{
????????return?age;
????}
????public?String?getAddress()?{
????????return?address;
????}
????public?void?setId(Long?id)?{
????????this.id?=?id;
????}
????public?void?setName(String?name)?{
????????this.name?=?name;
????}
????public?void?setAge(Integer?age)?{
????????this.age?=?age;
????}
????public?void?setAddress(String?address)?{
????????this.address?=?address;
????}
????@Override
????public?boolean?equals(Object?o)?{
????????if?(this?==?o)?returntrue;
????????if?(o?==?null?||?getClass()?!=?o.getClass())?returnfalse;
????????User?user?=?(User)?o;
????????return?Objects.equals(id,?user.id)?&&
????????????????Objects.equals(name,?user.name)?&&
????????????????Objects.equals(age,?user.age)?&&
????????????????Objects.equals(address,?user.address);
????}
????@Override
????public?int?hashCode()?{
????????return?Objects.hash(id,?name,?age,?address);
????}
????@Override
????public?String?toString()?{
????????return"User{"?+
????????????????"id="?+?id?+
????????????????",?name='"?+?name?+?'\''?+
????????????????",?age="?+?age?+
????????????????",?address='"?+?address?+?'\''?+
????????????????'}';
????}
}
該User類中包含了:成員變量、getter/setter方法、構(gòu)造方法、equals、hashCode方法。
咋一看,代碼還是挺多的。而且還有個問題,如果User類中的代碼修改了,比如:age字段改成字符串類型,或者name字段名稱修改了,是不是需要同步修改相關(guān)的成員變量、getter/setter方法、構(gòu)造方法、equals、hashCode方法全都修改一遍?
好消息是用lombok可以解決這個問題。
如果是idea2020.3之前的版本,需要在idea中安裝如下插件:
但idea2020.3之后,idea已經(jīng)內(nèi)置了lombok的功能。
有了lombok插件,現(xiàn)在我們在idea只用這樣寫代碼,就能實現(xiàn)上面的功能了:
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public?class?User?{
????private?Long?id;
????private?String?name;
????private?Integer?age;
????private?String?address;
}
簡直太輕松了,真的可以少寫很多代碼。
此外,我們還需要在項目的pom文件中,引入lombok的依賴包,不然項目會跑不起來。
2. Free Mybatis plugin
在國內(nèi)mybatis已經(jīng)成為了最主流的數(shù)據(jù)庫框架了,該框架屬于半自動化的ORM持久化框架,相對于hibernate這種全自動化的持久化框架更靈活,性能更高。
在mybatis中,我們需要自己定義mapper和對應(yīng)的xml文件完成綁定。
在這里我們以用戶表為例,首先需要定義UserMapper接口:
public?interface?UserMapper?{
??int?insertUser(UserModel?user);
}
然后需要UserMapper.xml配置文件:
"1.0"?encoding="UTF-8"??>
????????PUBLIC?"-//mybatis.org//DTD?Mapper?3.0//EN"
????????"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
"com.sue.jump.mappers.UserMapper">
????"selectUserVo">
????????id,?name,?age,?sex
?????
????"insertUser"?parameterType="com.sue.jump.model.UserModel">
????????INSERT?INTO?user
????????"("?suffix=")"?suffixOverrides=",">
????????????<if?test="id?!=?null?">
????????????????id,
????????????if>
????????????<if?test="name?!=?null??and?name?!=?''">
????????????????name,
????????????if>
????????????<if?test="age?!=?null?">
????????????????age,
????????????if>
????????????<if?test="sex?!=?null?">
????????????????sex,
????????????if>
????????
????????"values?("?suffix=")"?suffixOverrides=",">
????????????<if?test="id?!=?null?">
????????????????#{id},
????????????if>
????????????<if?test="name?!=?null??and?name?!=?''">
????????????????#{name},
????????????if>
????????????<if?test="age?!=?null?">
????????????????#{age},
????????????if>
????????????<if?test="sex?!=?null?">
????????????????#{sex},
????????????if>
????????
????
UserMapper.xml文件中,mapper標簽的namespace對應(yīng)UserMapper接口名,而insert標簽的id=insertUser,正好對應(yīng)UserMapper接口中的insertUser方法。
那么,在項目中如何通過UserMapper類中的getUser方法,能夠快速訪問UserMapper.xml文件中的getUser方法?
答:這就需要使用Free Mybatis plugin插件了。

安裝了該插件之后,在UserMapper接口的接口名和方法名的左邊,會多了兩個綠色的箭頭,我們點擊該箭頭,就能跳轉(zhuǎn)到UserMapper.xml文件對應(yīng)的mapper標簽或者insertUser語句上。
此外,在UserMapper.xml文件的insertUser語句的左邊,也會多出一個綠色的箭頭,我們點擊該箭頭,也能跳轉(zhuǎn)到UserMapper接口的insertUser方法上。
有了這個插件,我們就能在mapper和xml之間自由切換,自由玩耍了,再也不用像以前那樣搜索來搜索去。
3.Translation
有些小伙伴,包括我自己可能英語不太好(我英語剛過四級)。
我們在給變量或者方法取名時,要想半天。特別是在閱讀JDK英文文檔時,遇到了一些生僻字,簡直頭大。
有個好消息是使用:Translation插件,能夠讓我們在文檔中自由飛翔。
安裝完Translation插件之后,在other settings中多了一個Translation菜單。
點擊該菜單:
在右邊的窗口中,可以選擇翻譯軟件。
選中需要翻譯的英文文檔:
在右鍵彈窗的窗口中,選擇Translation選項,會彈如下窗口:
一段英文段落,一下子翻譯成了中文,簡直太爽了。
4.Alibaba Java Coding Guidelines
如果你是從事Java開發(fā)工作的小伙伴,肯定看過阿里巴巴的《Java開發(fā)手冊》。
該手冊總結(jié)了我們在日常開發(fā)過程中,可能會遇到的問題。從編程規(guī)約、異常日志、單位測試、安全規(guī)約、Mysql數(shù)據(jù)庫和工程結(jié)構(gòu),這6大方面,規(guī)范了開發(fā)的流程,確保我們能寫出高效、優(yōu)雅的代碼。
但這些規(guī)范性的東西,僅僅靠人的自覺性,很難達到預(yù)期的效果。
為了解決這個問題,阿里巴巴推出了Alibaba Java Coding Guidelines插件,能夠通過該插件,直接查出不合規(guī)范的代碼。

安裝了該插件之后,按下快捷鍵:Ctrl+Alt+Shift+J,可以可對整個項目或單個文件進行編碼規(guī)約掃描。
掃描后會將不規(guī)范的代碼按從高到低。
目前有三個等級顯示在下方:
Blocker 崩潰 Critical 嚴重 Major 重要
點擊左邊其中一個不規(guī)范的代碼行,右邊窗口會立刻顯示不規(guī)范的詳細代碼,便于我們快速定位問題。
nice。
5. GenerateAllSetter
很多時候,我們需要給某個對象賦值,如果參數(shù)比較多的話,需要手寫大量的setter或者getter代碼。
有沒有辦法一鍵搞定呢?
答:有,使用GenerateAllSetter插件。

安裝完插件之后,在創(chuàng)建的對象上,按快捷鍵下:alt + enter。
在彈出的窗口中選擇:Generate all setter with default value。
就會自動生成如下代碼:
簡直太方便了。
6. SequenceDiagram
我們平時在閱讀源碼時,為了梳理清楚內(nèi)部邏輯,經(jīng)常需要畫一些時序圖。
如果我們直接畫,會浪費很多時間,而且畫的圖不一定正確。
這時可以使用:SequenceDiagram插件。
選擇具體某個方法,右鍵選擇:sequence diagram選項:
之后,會出現(xiàn)時序圖:
從此以后,能夠成為畫圖高手了,完美。
7. CheckStyle-IDEA
在代碼格式方面,有許多地方,需要我們注意,比如:無用導(dǎo)入、沒寫注釋、語法錯誤、方法太長等等。
有沒有辦法,可以在idea中,一次性檢測出上面的這些問題呢?
答:使用CheckStyle-IDEA插件。
CheckStyle-IDEA是一個檢測代碼格式是否滿足規(guī)范的工具,其中用得比較多的是Google規(guī)范和Sun規(guī)范。
安裝完插件后,在idea的下方會出現(xiàn):CheckStyle選項:
點擊左邊的綠色按鈕,可以掃描代碼。在中間位置,會顯示不符合代碼規(guī)范的原因。
雙擊代碼,即可直接跳轉(zhuǎn)到具體代碼:
8.JRebel and XRebel
在idea中開發(fā)Java項目,有個很不爽的地方是:每次修改一個類或者接口,都需要重啟服務(wù),否則不會運行最新地方。
而每次重啟,都需要花大量的時間。
有沒有辦法,Java代碼修改后不用重啟系統(tǒng),立即生效呢?
答:使用JRebel and XRebel插件。
如圖:
安裝完成之后,這里會有兩個綠色的按鈕,并且在右邊多了一個選項Select Rebel Agents:
其中一個綠色的按鈕,表示熱部署啟動項目,另外一個表示用debug默認熱部署啟動項目。
Select Rebel Agents選項中包含三個值:
JRebel:修改完代碼,不重啟服務(wù),期望代碼直接生效。 XRebel:請求過程中,各個部分代碼性能監(jiān)控。例如:方法執(zhí)行時間,出現(xiàn)的異常,SQL執(zhí)行時間,輸出的Log,MQ執(zhí)行時間等。 JRebel+XRebel:修改完代碼,不重啟服務(wù),并且監(jiān)控代碼。
9. Codota
說實話,idea現(xiàn)有的代碼提示功能,已經(jīng)很強大了。
但如果你使用過Codota插件,它會讓你寫代碼的速度更上一層樓。
安裝完插件之后,我們在寫代碼時,它會給你一些提示:
這些提示是基于ai統(tǒng)計出來的,非常有參考價值。
10. GsonFormat
很多時候,我需要把json中的參數(shù),轉(zhuǎn)換成實體對象中的參數(shù)。或者把實體對象中的參數(shù),轉(zhuǎn)換成json中的參數(shù)。
以前我們都是手動一個變量,一個變量的拷貝的。
但現(xiàn)在有個好消息是,idea的GsonFormat插件可以幫我們完成這件事。
安裝完插件之后,先創(chuàng)建一個空類:
按下快捷鍵:alt + s,會彈出下面這個窗口:
然后在該窗口中,錄入json數(shù)據(jù)。
點擊確定按鈕,就會自動生成這些代碼:
簡直帥呆了。
11. Rainbow Brackets
我們平時寫代碼的時候,括號是讓我們非常頭疼的地方,特別是代碼邏輯很多,層層嵌套的情況。
一眼很難看出,代碼是從哪個括號開始,到哪個反括號結(jié)束的。
有沒有辦法解決這個問題呢?
答:使用Rainbow Brackets插件。
安裝完插件之后,括號和反括號,在代碼中會自動按照不同顏色做區(qū)分:
非常顯目,非常直觀。
12. CodeGlance
有些時候,我們閱讀的代碼很多,比如某個類中包含的方法和成員變量很多。
從上往下,一點點往下翻,會浪費很多時間。那么有沒有辦法,能夠快速翻到想看的代碼呢?
答:有,可以使用CodeGlance插件。
安裝完插件之后,在代碼右側(cè),會出現(xiàn)下面這個窗口:
它是代碼的縮略圖,通過它我們能夠非??焖俚那袚Q代碼塊。
