<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用了這些IDEA插件以后,我寫代碼快了10倍!

          共 15045字,需瀏覽 31分鐘

           ·

          2023-10-27 13:38

          往期熱門文章:

          
              
              

          1、字節(jié)一面:post 為什么會(huì)發(fā)送兩次請(qǐng)求?被問(wèn)懵了…
          2、編寫 if 時(shí)盡量不要帶 else
          3、為什么 MyBatis 源碼中,沒(méi)有我那種 if···else
          4、微軟全力擁抱 Java !
          5、巧用 Redis,實(shí)現(xiàn)微博 Feed 流功能!
          5、知乎高贊:為什么別選計(jì)算機(jī)專業(yè)?

          文章來(lái)源:【公眾號(hào):蘇三說(shuō)技術(shù)】


          前言

          基本上每個(gè)程序員都會(huì)寫代碼,但寫代碼的速度不盡相同。

          為什么有些人,一天只能寫幾百行代碼?

          而有些人,一天可以寫幾千行代碼?

          有沒(méi)有辦法,可以提升開發(fā)效率,在相同的時(shí)間內(nèi),寫出更多的代碼呢?

          今天我跟大家一起聊聊在idea中,能提升編碼效率的12種插件,希望對(duì)大家有所幫助。


          1. lombok


          現(xiàn)在新版的idea已經(jīng)內(nèi)置了lombok插件,所以用它是一種趨勢(shì)。

          我之所以把lombok放在整篇文章的第一個(gè)介紹,是因?yàn)樗娴目梢詭臀疑賹懞芏啻a,特別是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方法。

          咋一看,代碼還是挺多的。而且還有個(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è)趇dea只用這樣寫代碼,就能實(shí)現(xiàn)上面的功能了:

             
             
          @ToString
          @EqualsAndHashCode
          @NoArgsConstructor
          @AllArgsConstructor
          @Getter
          @Setter
          public class User {

              private Long id;
              private String name;
              private Integer age;
              private String address;
          }


          簡(jiǎn)直太輕松了,真的可以少寫很多代碼。

          此外,我們還需要在項(xiàng)目的pom文件中,引入lombok的依賴包,不然項(xiàng)目會(huì)跑不起來(lái)。


          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接口:

             
             
          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"
                  "http://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標(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接口的接口名和方法名的左邊,會(huì)多了兩個(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ǔ)不太好(我英語(yǔ)剛過(guò)四級(jí))。

          我們?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開發(fā)工作的小伙伴,肯定看過(guò)阿里巴巴的《Java開發(fā)手冊(cè)》。

          該手冊(cè)總結(jié)了我們?cè)谌粘i_發(fā)過(guò)程中,可能會(huì)遇到的問(wèn)題。從編程規(guī)約、異常日志、單位測(cè)試、安全規(guī)約、Mysql數(shù)據(jù)庫(kù)和工程結(jié)構(gòu),這6大方面,規(guī)范了開發(fā)的流程,確保我們能寫出高效、優(yōu)雅的代碼。

          但這些規(guī)范性的東西,僅僅靠人的自覺性,很難達(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中開發(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)生成這些代碼:

          簡(jiǎn)直帥呆了。


          11. Rainbow Brackets


          我們平時(shí)寫代碼的時(shí)候,括號(hào)是讓我們非常頭疼的地方,特別是代碼邏輯很多,層層嵌套的情況。

          一眼很難看出,代碼是從哪個(gè)括號(hào)開始,到哪個(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ò)它我們能夠非常快速的切換代碼塊。

             
             
          往期熱門文章:

          1、Guava騷操作,10分鐘搞定日志脫敏需求!
          2、公司棄用 Nginx,選擇這款工具!
          3、項(xiàng)目自從用了接口請(qǐng)求合并,效率直接加倍!
          4、記一次CPU飆升問(wèn)題排查
          5、聊聊企業(yè)級(jí)消息推送的架構(gòu)設(shè)計(jì)
          6、new ArrayList 不當(dāng)導(dǎo)致 CPU 飆升。。
          7、假如Linus在中國(guó)···
          8、通過(guò) Arthas Trace 命令將接口性能優(yōu)化十倍
          9、一個(gè)由“ YYYY-MM-dd ”引發(fā)的慘案
          10、不要只盯著大廠,這20家中小廠我建議你也試試

          瀏覽 3106
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  2018天天日天天干 | 美日韩三级片在线观看 | 天天干天天干天天干天天射 | 国产成人亚洲精品 | 天天日天天操天天射 |