這12款idea插件,能讓你程式碼飛起來
- 2022 年 9 月 2 日
- 筆記
前言
基本上每個程式設計師都會寫程式碼,但寫程式碼的速度不盡相同。
為什麼有些人,一天只能寫幾百行程式碼?
而有些人,一天可以寫幾千行程式碼?
有沒有辦法,可以提升開發效率,在相同的時間內,寫出更多的程式碼呢?
今天我跟大家一起聊聊在idea中,能提升編碼效率的12種插件,希望對大家有所幫助。

1. lombok
之前對lombok還有爭議,到底該不該在項目中使用,為此我還專門寫了一篇文章《迷茫了,我們該不該用lombok?》。
現在新版的idea已經內置了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方法、構造方法、equals、hashCode方法。
咋一看,程式碼還是挺多的。而且還有個問題,如果User類中的程式碼修改了,比如:age欄位改成字元串類型,或者name欄位名稱修改了,是不是需要同步修改相關的成員變數、getter/setter方法、構造方法、equals、hashCode方法全都修改一遍?
好消息是用lombok可以解決這個問題。
如果是idea2020.3之前的版本,需要在idea中安裝如下插件:

但idea2020.3之後,idea已經內置了lombok的功能。
有了lombok插件,現在我們在idea只用這樣寫程式碼,就能實現上面的功能了:
@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
在中國mybatis已經成為了最主流的資料庫框架了,該框架屬於半自動化的ORM持久化框架,相對於hibernate這種全自動化的持久化框架更靈活,性能更高。
在mybatis中,我們需要自己定義mapper和對應的xml文件完成綁定。
在這裡我們以用戶表為例,首先需要定義UserMapper介面:
public interface UserMapper {
int insertUser(UserModel user);
}
然後需要UserMapper.xml配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"//mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sue.jump.mappers.UserMapper">
<sql id="selectUserVo">
id, name, age, sex
</sql>
<insert id="insertUser" parameterType="com.sue.jump.model.UserModel">
INSERT INTO user
<trim prefix="(" 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>
</trim>
<trim prefix="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>
</trim>
</insert>
</mapper>
UserMapper.xml文件中,mapper標籤的namespace對應UserMapper介面名,而insert標籤的id=insertUser,正好對應UserMapper介面中的insertUser方法。
那麼,在項目中如何通過UserMapper類中的getUser方法,能夠快速訪問UserMapper.xml文件中的getUser方法?
答:這就需要使用Free Mybatis plugin插件了。

安裝了該插件之後,在UserMapper介面的介面名和方法名的左邊,會多了兩個綠色的箭頭,我們點擊該箭頭,就能跳轉到UserMapper.xml文件對應的mapper標籤或者insertUser語句上。

此外,在UserMapper.xml文件的insertUser語句的左邊,也會多出一個綠色的箭頭,我們點擊該箭頭,也能跳轉到UserMapper介面的insertUser方法上。

有了這個插件,我們就能在mapper和xml之間自由切換,自由玩耍了,再也不用像以前那樣搜索來搜索去。
3.Translation
有些小夥伴,包括我自己可能英語不太好(我英語剛過四級)。
我們在給變數或者方法取名時,要想半天。特別是在閱讀JDK英文文檔時,遇到了一些生僻字,簡直頭大。
有個好消息是使用:Translation插件,能夠讓我們在文檔中自由飛翔。

安裝完Translation插件之後,在other settings中多了一個Translation菜單。
點擊該菜單:

在右邊的窗口中,可以選擇翻譯軟體。
選中需要翻譯的英文文檔:

在右鍵彈窗的窗口中,選擇Translation選項,會彈如下窗口:

一段英文段落,一下子翻譯成了中文,簡直太爽了。
4.Alibaba Java Coding Guidelines
如果你是從事Java開發工作的小夥伴,肯定看過阿里巴巴的《Java開發手冊》。
該手冊總結了我們在日常開發過程中,可能會遇到的問題。從編程規約、異常日誌、單位測試、安全規約、Mysql資料庫和工程結構,這6大方面,規範了開發的流程,確保我們能寫出高效、優雅的程式碼。
但這些規範性的東西,僅僅靠人的自覺性,很難達到預期的效果。
為了解決這個問題,阿里巴巴推出了Alibaba Java Coding Guidelines插件,能夠通過該插件,直接查出不合規範的程式碼。

安裝了該插件之後,按下快捷鍵:Ctrl+Alt+Shift+J,可以可對整個項目或單個文件進行編碼規約掃描。

掃描後會將不規範的程式碼按從高到低。
目前有三個等級顯示在下方:
- Blocker 崩潰
- Critical 嚴重
- Major 重要

點擊左邊其中一個不規範的程式碼行,右邊窗口會立刻顯示不規範的詳細程式碼,便於我們快速定位問題。
nice。
5. GenerateAllSetter
很多時候,我們需要給某個對象賦值,如果參數比較多的話,需要手寫大量的setter或者getter程式碼。
有沒有辦法一鍵搞定呢?
答:有,使用GenerateAllSetter插件。

安裝完插件之後,在創建的對象上,按快捷鍵下:alt + enter。
在彈出的窗口中選擇:Generate all setter with default value。

就會自動生成如下程式碼:

簡直太方便了。
6. SequenceDiagram
我們平時在閱讀源碼時,為了梳理清楚內部邏輯,經常需要畫一些時序圖。
如果我們直接畫,會浪費很多時間,而且畫的圖不一定正確。
這時可以使用:SequenceDiagram插件。

選擇具體某個方法,右鍵選擇:sequence diagram選項:

之後,會出現時序圖:

從此以後,能夠成為畫圖高手了,完美。
7. CheckStyle-IDEA
在程式碼格式方面,有許多地方,需要我們注意,比如:無用導入、沒寫注釋、語法錯誤、方法太長等等。
有沒有辦法,可以在idea中,一次性檢測出上面的這些問題呢?
答:使用CheckStyle-IDEA插件。
CheckStyle-IDEA是一個檢測程式碼格式是否滿足規範的工具,其中用得比較多的是Google規範和Sun規範。

安裝完插件後,在idea的下方會出現:CheckStyle選項:

點擊左邊的綠色按鈕,可以掃描程式碼。在中間位置,會顯示不符合程式碼規範的原因。
雙擊程式碼,即可直接跳轉到具體程式碼:

8.JRebel and XRebel
在idea中開發Java項目,有個很不爽的地方是:每次修改一個類或者介面,都需要重啟服務,否則不會運行最新地方。
而每次重啟,都需要花大量的時間。
有沒有辦法,Java程式碼修改後不用重啟系統,立即生效呢?
答:使用JRebel and XRebel插件。
如圖:

安裝完成之後,這裡會有兩個綠色的按鈕,並且在右邊多了一個選項Select Rebel Agents:

其中一個綠色的按鈕,表示熱部署啟動項目,另外一個表示用debug默認熱部署啟動項目。
Select Rebel Agents選項中包含三個值:
- JRebel:修改完程式碼,不重啟服務,期望程式碼直接生效。
- XRebel:請求過程中,各個部分程式碼性能監控。例如:方法執行時間,出現的異常,SQL執行時間,輸出的Log,MQ執行時間等。
- JRebel+XRebel:修改完程式碼,不重啟服務,並且監控程式碼。
9. Codota
說實話,idea現有的程式碼提示功能,已經很強大了。
但如果你使用過Codota插件,它會讓你寫程式碼的速度更上一層樓。

安裝完插件之後,我們在寫程式碼時,它會給你一些提示:

這些提示是基於ai統計出來的,非常有參考價值。
10. GsonFormat
很多時候,我需要把json中的參數,轉換成實體對象中的參數。或者把實體對象中的參數,轉換成json中的參數。
以前我們都是手動一個變數,一個變數的拷貝的。
但現在有個好消息是,idea的GsonFormat插件可以幫我們完成這件事。

安裝完插件之後,先創建一個空類:

按下快捷鍵:alt + s,會彈出下面這個窗口:

然後在該窗口中,錄入json數據。
點擊確定按鈕,就會自動生成這些程式碼:

簡直帥呆了。
11. Rainbow Brackets
我們平時寫程式碼的時候,括弧是讓我們非常頭疼的地方,特別是程式碼邏輯很多,層層嵌套的情況。
一眼很難看出,程式碼是從哪個括弧開始,到哪個反括弧結束的。
有沒有辦法解決這個問題呢?
答:使用Rainbow Brackets插件。

安裝完插件之後,括弧和反括弧,在程式碼中會自動按照不同顏色做區分:

非常顯目,非常直觀。
12. CodeGlance
有些時候,我們閱讀的程式碼很多,比如某個類中包含的方法和成員變數很多。
從上往下,一點點往下翻,會浪費很多時間。那麼有沒有辦法,能夠快速翻到想看的程式碼呢?
答:有,可以使用CodeGlance插件。

安裝完插件之後,在程式碼右側,會出現下面這個窗口:

它是程式碼的縮略圖,通過它我們能夠非常快速的切換程式碼塊。
最後說一句(求關注,別白嫖我)
如果這篇文章對您有所幫助,或者有所啟發的話,幫忙掃描下發二維碼關注一下,您的支援是我堅持寫作最大的動力。
求一鍵三連:點贊、轉發、在看。
關注公眾號:【蘇三說技術】,在公眾號中回復:面試、程式碼神器、開發手冊、時間管理有超贊的粉絲福利,另外回復:加群,可以跟很多BAT大廠的前輩交流和學習。

