前言
基本上每個(gè)程序員都會(huì)寫代碼,但寫代碼的速度不盡相同。
為什么有些人,一天只能寫幾百行代碼?
而有些人,一天可以寫幾千行代碼?
有什么辦法可以提升開(kāi)發(fā)效率,在相同的時(shí)間內(nèi)寫出更多的代碼呢?
今天我跟大家一起聊聊在idea中,能提升編碼效率的12種插件,希望對(duì)大家有所幫助。
基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
1. lombok
之前對(duì) lombok 還有爭(zhēng)議,到底該不該在項(xiàng)目中使用。
現(xiàn)在新版的 idea 已經(jīng)內(nèi)置了 lombok 插件,所以用它是一種趨勢(shì)。
我之所以把 lombok 放在第一個(gè)介紹,是因?yàn)樗娴目梢詭臀疑賹懞芏啻a,特別是 entity、DTO、VO、BO 中的。
我們用 User 類舉例,以前定義 javabean 需要寫如下代碼:
publicclassUser{ privateLongid; privateStringname; privateIntegerage; privateStringaddress; publicUser(){ } publicUser(Longid,Stringname,Integerage,Stringaddress){ this.id=id; this.name=name; this.age=age; this.address=address; } publicLonggetId(){ returnid; } publicStringgetName(){ returnname; } publicIntegergetAge(){ returnage; } publicStringgetAddress(){ returnaddress; } publicvoidsetId(Longid){ this.id=id; } publicvoidsetName(Stringname){ this.name=name; } publicvoidsetAge(Integerage){ this.age=age; } publicvoidsetAddress(Stringaddress){ this.address=address; } @Override publicbooleanequals(Objecto){ if(this==o)returntrue; if(o==null||getClass()!=o.getClass())returnfalse; Useruser=(User)o; returnObjects.equals(id,user.id)&& Objects.equals(name,user.name)&& Objects.equals(age,user.age)&& Objects.equals(address,user.address); } @Override publicinthashCode(){ returnObjects.hash(id,name,age,address); } @Override publicStringtoString(){ return"User{"+ "id="+id+ ",name='"+name+'''+ ",age="+age+ ",address='"+address+'''+ '}'; } }
該 User 類中包含了:成員變量、getter/setter 方法、構(gòu)造方法、equals、hashCode 方法。
乍一看,代碼還是挺多的。而且還有個(gè)問(wèn)題,如果 User 類中的代碼修改了,比如:age 字段改成字符串類型,或者 name 字段名稱修改了,是不是需要同步修改相關(guān)的成員變量、getter/setter 方法、構(gòu)造方法、equals、hashCode 方法全都修改一遍?
好消息是用 lombok 可以解決這個(gè)問(wèn)題。
如果是 idea2020.3 之前的版本,需要在 idea 中安裝如下插件:
但 idea2020.3 之后,idea 已經(jīng)內(nèi)置了 lombok 的功能。
有了 lombok 插件,現(xiàn)在我們?cè)?idea 只用這樣寫代碼,就能實(shí)現(xiàn)上面的功能了:
@ToString @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor @Getter @Setter publicclassUser{ privateLongid; privateStringname; privateIntegerage; privateStringaddress; }
簡(jiǎn)直太輕松了,真的可以少寫很多代碼。
此外,我們還需要在項(xiàng)目的 pom 文件中,引入 lombok 的依賴包,不然項(xiàng)目會(huì)跑不起來(lái)。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://gitee.com/zhijiantianya/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
2. Free Mybatis plugin
在國(guó)內(nèi)mybatis已經(jīng)成為了最主流的數(shù)據(jù)庫(kù)框架了,該框架屬于半自動(dòng)化的 ORM 持久化框架,相對(duì)于 hibernate 這種全自動(dòng)化的持久化框架更靈活,性能更高。
在mybatis中,我們需要自己定義 mapper 和對(duì)應(yīng)的 xml 文件完成綁定。
在這里我們以用戶表為例,首先需要定義 UserMapper 接口:
publicinterfaceUserMapper{ intinsertUser(UserModeluser); }
然后需要 UserMapper.xml 配置文件:
id,name,age,sex INSERTINTOuser id, name, age, sex, #{id}, #{name}, #{age}, #{sex},
UserMapper.xml 文件中,mapper 標(biāo)簽的 namespace 對(duì)應(yīng) UserMapper 接口名,而 insert 標(biāo)簽的 id=insertUser,正好對(duì)應(yīng) UserMapper 接口中的 insertUser 方法。
那么,在項(xiàng)目中如何通過(guò) UserMapper 類中的 getUser 方法,能夠快速訪問(wèn) UserMapper.xml 文件中的 getUser 方法?
答:這就需要使用Free Mybatis plugin插件了。
安裝了該插件之后,在 UserMapper 接口的接口名和方法名的左邊,多了兩個(gè)綠色的箭頭,我們點(diǎn)擊該箭頭,就能跳轉(zhuǎn)到 UserMapper.xml 文件對(duì)應(yīng)的 mapper 標(biāo)簽或者 insertUser 語(yǔ)句上。
此外,在 UserMapper.xml 文件的 insertUser 語(yǔ)句的左邊,也會(huì)多出一個(gè)綠色的箭頭,我們點(diǎn)擊該箭頭,也能跳轉(zhuǎn)到 UserMapper 接口的 insertUser 方法上。
有了這個(gè)插件,我們就能在 mapper 和 xml 之間自由切換自由玩耍了,再也不用像以前那樣搜索來(lái)搜索去。
3.Translation
有些小伙伴,包括我自己可能英語(yǔ)不太好。我們?cè)诮o變量或者方法取名時(shí),要想半天。特別是在閱讀 JDK 英文文檔時(shí),遇到了一些生僻字,簡(jiǎn)直頭大。
有個(gè)好消息是使用:Translation插件,能夠讓我們?cè)谖臋n中自由飛翔。
安裝完Translation插件之后,在 other settings 中多了一個(gè) Translation 菜單。
點(diǎn)擊該菜單:
在右邊的窗口中,可以選擇翻譯軟件。
選中需要翻譯的英文文檔:
在右鍵彈窗的窗口中,選擇 Translation 選項(xiàng),會(huì)彈如下窗口:
一段英文段落,一下子翻譯成了中文,簡(jiǎn)直太爽了。
4.Alibaba Java Coding Guidelines
如果你是從事 Java 開(kāi)發(fā)工作的小伙伴,肯定看過(guò)阿里巴巴的《Java 開(kāi)發(fā)手冊(cè)》。
該手冊(cè)總結(jié)了我們?cè)谌粘i_(kāi)發(fā)過(guò)程中,可能會(huì)遇到的問(wèn)題。從編程規(guī)約、異常日志、單位測(cè)試、安全規(guī)約、Mysql 數(shù)據(jù)庫(kù)和工程結(jié)構(gòu)這 6 大方面,規(guī)范了開(kāi)發(fā)的流程,確保我們能寫出高效、優(yōu)雅的代碼。
但這些規(guī)范性的東西,僅僅靠人的自覺(jué)性,很難達(dá)到預(yù)期的效果。
為了解決這個(gè)問(wèn)題,阿里巴巴推出了Alibaba Java Coding Guidelines插件,能夠通過(guò)該插件,直接查出不合規(guī)范的代碼。
安裝了該插件之后,按下快捷鍵:Ctrl+Alt+Shift+J,可以對(duì)整個(gè)項(xiàng)目或單個(gè)文件進(jìn)行編碼規(guī)約掃描。
掃描后會(huì)將不規(guī)范的代碼按從高到低排列。
目前有三個(gè)等級(jí)顯示在下方:
Blocker 崩潰
Critical 嚴(yán)重
Major 重要
點(diǎn)擊左邊其中一個(gè)不規(guī)范的代碼行,右邊窗口會(huì)立刻顯示不規(guī)范的詳細(xì)代碼,便于我們快速定位問(wèn)題。nice!
5. GenerateAllSetter
很多時(shí)候,我們需要給某個(gè)對(duì)象賦值,如果參數(shù)比較多的話,需要手寫大量的setter或者getter代碼。
有沒(méi)有辦法一鍵搞定呢?
答:有,使用GenerateAllSetter插件。
安裝完插件之后,在創(chuàng)建的對(duì)象上,按下快捷鍵:alt + enter。
在彈出的窗口中選擇:Generate all setter with default value。
就會(huì)自動(dòng)生成如下代碼:
簡(jiǎn)直太方便了。
6. SequenceDiagram
我們平時(shí)在閱讀源碼時(shí),為了梳理清楚內(nèi)部邏輯,經(jīng)常需要畫一些時(shí)序圖。
如果我們直接畫,會(huì)浪費(fèi)很多時(shí)間,而且畫的圖不一定正確。
這時(shí)可以使用:SequenceDiagram插件。
選擇具體某個(gè)方法,右鍵選擇:sequence diagram 選項(xiàng):
之后,會(huì)出現(xiàn)時(shí)序圖:
從此以后,就成為畫圖高手了,完美。
7. CheckStyle-IDEA
在代碼格式方面,有許多地方需要我們注意,比如:無(wú)用導(dǎo)入、沒(méi)寫注釋、語(yǔ)法錯(cuò)誤、方法太長(zhǎng)等等。
有沒(méi)有辦法,可以在 idea 中一次性檢測(cè)出上面的這些問(wèn)題呢?
答:使用CheckStyle-IDEA插件。
CheckStyle-IDEA是一個(gè)檢測(cè)代碼格式是否滿足規(guī)范的工具,其中用得比較多的是Google規(guī)范和Sun規(guī)范。
安裝完插件后,在 idea 的下方會(huì)出現(xiàn) CheckStyle 選項(xiàng):
點(diǎn)擊左邊的綠色按鈕,可以掃描代碼。在中間位置,會(huì)顯示不符合代碼規(guī)范的原因。
雙擊代碼,即可直接跳轉(zhuǎn)到具體代碼:
8.JRebel and XRebel
在 idea 中開(kāi)發(fā) Java 項(xiàng)目,有個(gè)很不爽的地方是:每次修改一個(gè)類或者接口,都需要重啟服務(wù),否則不會(huì)運(yùn)行最新地方。而每次重啟,都需要花大量的時(shí)間。
有沒(méi)有辦法,Java 代碼修改后不用重啟系統(tǒng),立即生效呢?
答:使用JRebel and XRebel插件。
如圖:
安裝完成之后,這里會(huì)有兩個(gè)綠色的按鈕,并且在右邊多了一個(gè)選項(xiàng) Select Rebel Agents:
其中一個(gè)綠色的按鈕,表示熱部署啟動(dòng)項(xiàng)目,另外一個(gè)表示用 debug 默認(rèn)熱部署啟動(dòng)項(xiàng)目。
Select Rebel Agents 選項(xiàng)中包含三個(gè)值:
JRebel:修改完代碼,不重啟服務(wù),期望代碼直接生效。
XRebel:請(qǐng)求過(guò)程中,各個(gè)部分代碼性能監(jiān)控。例如:方法執(zhí)行時(shí)間、出現(xiàn)的異常、SQL 執(zhí)行時(shí)間、輸出的 Log、MQ 執(zhí)行時(shí)間等。
JRebel+XRebel:修改完代碼,不重啟服務(wù),并且監(jiān)控代碼。
9. Codota
說(shuō)實(shí)話,idea 現(xiàn)有的代碼提示功能,已經(jīng)很強(qiáng)大了。
但如果你使用過(guò)Codota插件,它會(huì)讓你寫代碼的速度更上一層樓。
安裝完插件之后,我們?cè)趯懘a時(shí),它會(huì)給你一些提示:
這些提示是基于 ai 統(tǒng)計(jì)出來(lái)的,非常有參考價(jià)值。
10. GsonFormat
很多時(shí)候,我需要把json中的參數(shù),轉(zhuǎn)換成實(shí)體對(duì)象中的參數(shù)?;蛘甙褜?shí)體對(duì)象中的參數(shù),轉(zhuǎn)換成json中的參數(shù)。
以前我們都是手動(dòng)一個(gè)變量一個(gè)變量拷貝。但現(xiàn)在有個(gè)好消息是,idea 的GsonFormat插件可以幫我們完成這件事。
安裝完插件之后,先創(chuàng)建一個(gè)空類:
按下快捷鍵:alt + s,會(huì)彈出下面這個(gè)窗口:
然后在該窗口中,錄入 json 數(shù)據(jù)。
點(diǎn)擊確定按鈕,就會(huì)自動(dòng)生成這些代碼:
https://mp.weixin.qq.com/s/PiAxqEhkR8g1AOYGGS5Yqw你已選中了添加鏈接的內(nèi)容
簡(jiǎn)直帥呆了。
11. Rainbow Brackets
我們平時(shí)寫代碼的時(shí)候,括號(hào)是讓我們非常頭疼的地方,特別是代碼邏輯很多、層層嵌套的情況。
一眼很難看出,代碼是從哪個(gè)括號(hào)開(kāi)始,到哪個(gè)反括號(hào)結(jié)束的。
有沒(méi)有辦法解決這個(gè)問(wèn)題呢?
答:使用Rainbow Brackets插件。
安裝完插件之后,括號(hào)和反括號(hào),在代碼中會(huì)自動(dòng)按照不同顏色做區(qū)分:
非常顯目,非常直觀。
12. CodeGlance
有些時(shí)候,我們閱讀的代碼很多,比如某個(gè)類中包含的方法和成員變量很多。
從上往下,一點(diǎn)點(diǎn)往下翻,會(huì)浪費(fèi)很多時(shí)間。那么有沒(méi)有辦法,能夠快速翻到想看的代碼呢?
答:有,可以使用CodeGlance插件。安裝完插件之后,在代碼右側(cè),會(huì)出現(xiàn)下面這個(gè)窗口:
它是代碼的縮略圖,通過(guò)它我們能夠非??焖俚厍袚Q代碼塊。
-
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68524 -
插件
+關(guān)注
關(guān)注
0文章
326瀏覽量
22440 -
idea
+關(guān)注
關(guān)注
1文章
68瀏覽量
4272
原文標(biāo)題:用了這個(gè)IntellijIDEA插件以后,我寫代碼快了10倍!
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論