这12款idea插件,能让你代码飞起来!

前言

基本上每个程序员都会写代码,但写代码的速度不尽相同。

为什么有些人,一天只能写几百行代码?

而有些人,一天可以写几千行代码?

有没有办法,可以提升开发效率,在相同的时间内,写出更多的代码呢?

今天我跟大家一起聊聊在idea中,能提升编码效率的12种插件,希望对大家有所帮助。

c0dcc0301d2a62d0562aeb932d4b7883.png

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;}@Overridepublic 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);}@Overridepublic int hashCode() {return Objects.hash(id, name, age, address);}@Overridepublic 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中安装如下插件:3215135279633b87b3be608ec4056937.png但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 mapperPUBLIC "-//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标签的namespace对应UserMapper接口名,而insert标签的id=insertUser,正好对应UserMapper接口中的insertUser方法。

那么,在项目中如何通过UserMapper类中的getUser方法,能够快速访问UserMapper.xml文件中的getUser方法?

答:这就需要使用Free Mybatis plugin插件了。

a3f434a9e6747b7a0381199f354d38d2.png

安装了该插件之后,在UserMapper接口的接口名和方法名的左边,会多了两个绿色的箭头,我们点击该箭头,就能跳转到UserMapper.xml文件对应的mapper标签或者insertUser语句上。686359c220b5266bcb692e32888a4a8b.png此外,在UserMapper.xml文件的insertUser语句的左边,也会多出一个绿色的箭头,我们点击该箭头,也能跳转到UserMapper接口的insertUser方法上。aabb4c7b2a0ec9cb57a00779a1dc23b9.png有了这个插件,我们就能在mapper和xml之间自由切换,自由玩耍了,再也不用像以前那样搜索来搜索去。

3.Translation

有些小伙伴,包括我自己可能英语不太好(我英语刚过四级)。

我们在给变量或者方法取名时,要想半天。特别是在阅读JDK英文文档时,遇到了一些生僻字,简直头大。

有个好消息是使用:Translation插件,能够让我们在文档中自由飞翔。1364d8b26eeba8128bd7ceebd50dd389.png安装完Translation插件之后,在other settings中多了一个Translation菜单。

点击该菜单:c01baf2dceb13d32df48ec9fc7b730ea.png在右边的窗口中,可以选择翻译软件。

选中需要翻译的英文文档:7d5d7f4aced14be50b22943ec0e467fa.png在右键弹窗的窗口中,选择Translation选项,会弹如下窗口:2d1070f3787e291ab2bd8014831c47cc.png一段英文段落,一下子翻译成了中文,简直太爽了。

4.Alibaba Java Coding Guidelines

如果你是从事Java开发工作的小伙伴,肯定看过阿里巴巴的《Java开发手册》。

该手册总结了我们在日常开发过程中,可能会遇到的问题。从编程规约、异常日志、单位测试、安全规约、Mysql数据库和工程结构,这6大方面,规范了开发的流程,确保我们能写出高效、优雅的代码。

但这些规范性的东西,仅仅靠人的自觉性,很难达到预期的效果。

为了解决这个问题,阿里巴巴推出了Alibaba Java Coding Guidelines插件,能够通过该插件,直接查出不合规范的代码。

0b486d7bea5b337a1123506e44e86499.png

安装了该插件之后,按下快捷键:Ctrl+Alt+Shift+J,可以可对整个项目或单个文件进行编码规约扫描。

e767c34b893f047cad1ae4577fd2eed7.png扫描后会将不规范的代码按从高到低。

目前有三个等级显示在下方:

  • Blocker 崩溃

  • Critical 严重

  • Major 重要

07d70bbfe3ee1d50974ecdf2d5554c59.png点击左边其中一个不规范的代码行,右边窗口会立刻显示不规范的详细代码,便于我们快速定位问题。

nice。

5. GenerateAllSetter

很多时候,我们需要给某个对象赋值,如果参数比较多的话,需要手写大量的setter或者getter代码。

有没有办法一键搞定呢?

答:有,使用GenerateAllSetter插件。

54ca966278b6b0d9fd1addb9e1446750.png

安装完插件之后,在创建的对象上,按快捷键下:alt + enter

在弹出的窗口中选择:Generate all setter with default value。be27941701f7768635e3f5b4c870c173.png就会自动生成如下代码:07f913257a1d298a91449bf78da52114.png简直太方便了。

6. SequenceDiagram

我们平时在阅读源码时,为了梳理清楚内部逻辑,经常需要画一些时序图

如果我们直接画,会浪费很多时间,而且画的图不一定正确。

这时可以使用:SequenceDiagram插件。

c40a54c36ad3da2695a8b5b77b2da920.png选择具体某个方法,右键选择:sequence diagram选项:9d4d5b70941dc87aa98093b6b7c3e87b.png之后,会出现时序图:4627b3a11ec15c3bc1c6f961539ab12f.png

从此以后,能够成为画图高手了,完美。

7. CheckStyle-IDEA

在代码格式方面,有许多地方,需要我们注意,比如:无用导入、没写注释、语法错误、方法太长等等。

有没有办法,可以在idea中,一次性检测出上面的这些问题呢?

答:使用CheckStyle-IDEA插件。

CheckStyle-IDEA是一个检测代码格式是否满足规范的工具,其中用得比较多的是Google规范和Sun规范。

c1f93d648bf1207b389ab6dad956487b.png安装完插件后,在idea的下方会出现:CheckStyle选项:4a2b71b3bd678b1c820298bc5f941707.png点击左边的绿色按钮,可以扫描代码。在中间位置,会显示不符合代码规范的原因。

双击代码,即可直接跳转到具体代码:42b74a6562b3ea8862c3da4ec85965aa.png

8.JRebel and XRebel

在idea中开发Java项目,有个很不爽的地方是:每次修改一个类或者接口,都需要重启服务,否则不会运行最新地方。

而每次重启,都需要花大量的时间。

有没有办法,Java代码修改后不用重启系统,立即生效呢?

答:使用JRebel and XRebel插件。

如图:f17df40606b34f8fb2b61b01345f2265.png

安装完成之后,这里会有两个绿色的按钮,并且在右边多了一个选项Select Rebel Agents:3dfb79d4feddced39510b670c7b20b21.png其中一个绿色的按钮,表示热部署启动项目,另外一个表示用debug默认热部署启动项目。

Select Rebel Agents选项中包含三个值:

  • JRebel:修改完代码,不重启服务,期望代码直接生效。

  • XRebel:请求过程中,各个部分代码性能监控。例如:方法执行时间,出现的异常,SQL执行时间,输出的Log,MQ执行时间等。

  • JRebel+XRebel:修改完代码,不重启服务,并且监控代码。

9. Codota

说实话,idea现有的代码提示功能,已经很强大了。

但如果你使用过Codota插件,它会让你写代码的速度更上一层楼。96e0b7afbbb75244678141f13da4921a.png安装完插件之后,我们在写代码时,它会给你一些提示:310284f0a9339aae2c9bc8ec78ae04ad.png这些提示是基于ai统计出来的,非常有参考价值。

10. GsonFormat

很多时候,我需要把json中的参数,转换成实体对象中的参数。或者把实体对象中的参数,转换成json中的参数。

以前我们都是手动一个变量,一个变量的拷贝的。

但现在有个好消息是,idea的GsonFormat插件可以帮我们完成这件事。

bacd837d94eab080f2942167cd37c7f8.png安装完插件之后,先创建一个空类:759f84ed01ba23a60a39c4489aa1c9f9.png按下快捷键:alt + s,会弹出下面这个窗口:c6becdd23b96911b231d47c0542703ce.png然后在该窗口中,录入json数据。

点击确定按钮,就会自动生成这些代码:1a89c9ba005467c9b02904b516dc9a06.png简直帅呆了。

11. Rainbow Brackets

我们平时写代码的时候,括号是让我们非常头疼的地方,特别是代码逻辑很多,层层嵌套的情况。

一眼很难看出,代码是从哪个括号开始,到哪个反括号结束的。

有没有办法解决这个问题呢?

答:使用Rainbow Brackets插件。

436d4604a62f474da0745211c2befd0f.png安装完插件之后,括号和反括号,在代码中会自动按照不同颜色做区分:9055a73f2a4fa3cc85023498135f53b9.png非常显目,非常直观。

12. CodeGlance

有些时候,我们阅读的代码很多,比如某个类中包含的方法和成员变量很多。

从上往下,一点点往下翻,会浪费很多时间。那么有没有办法,能够快速翻到想看的代码呢?

答:有,可以使用CodeGlance插件。3e384597974713582a7f44e230c7037c.png安装完插件之后,在代码右侧,会出现下面这个窗口:749a45fe737dfaf1dd4087e076ccd707.png它是代码的缩略图,通过它我们能够非常快速的切换代码块。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node js 开发网站_使用Node JS开发网站

node js 开发网站You will have your own fully functional website running on "localhost" after going through this article. 阅读完本文后&#xff0c;您将在“ localhost”上运行自己的功能齐全的网站 。 Basic knowledge of JavaScript and HTML is a prereq…

Java:LocalDate / LocalDateTime加减时间

在线API参考&#xff1a;LocalTime (Java Platform SE 8 ) 方法介绍 方法1方法1说明plusYears(long years) minusYears(long years) 返回增加/减少了年数的副本plusMonths(long months) minusMonths(long months)返回增加/减少了月数的副本plusWeeks(long weeks) minusWeeks(…

集合 List 分片的 5 种实现

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;前些天在实现 MyBatis 批量插入时遇到了一个问题&#xff0c;当批量插入的数据量比较大时&#xff0c;会导致程序执行报错&a…

使用它给 ​xxl-job 添加任务,太爽了

xxl-job是一款非常优秀的任务调度中间件&#xff0c;轻量级、使用简单、支持分布式等优点&#xff0c;让它广泛应用在我们的项目中&#xff0c;解决了不少定时任务的调度问题。我们都知道&#xff0c;在使用过程中需要先到xxl-job的任务调度中心页面上&#xff0c;配置执行器ex…

dubboSPI机制浅谈

2019独角兽企业重金招聘Python工程师标准>>> &#xfeff;&#xfeff;&#xfeff;本文重点讲述SPI机制&#xff0c;从jdk和dubbo 1、jdk spi机制 2、dubbo spi实现 首先spi是什么&#xff1f; SPI是为某个接口寻找服务实现的机制。为了实现在模块装配的时候能不在…

彻底搞懂 SpringBoot 中的 starter 机制

前言我们都知道&#xff0c;Spring的功能非常强大&#xff0c;但也有些弊端。比如&#xff1a;我们需要手动去配置大量的参数&#xff0c;没有默认值&#xff0c;需要我们管理大量的jar包和它们的依赖。为了提升Spring项目的开发效率&#xff0c;简化一些配置&#xff0c;Sprin…

Java 中验证时间格式的 4 种方法

大家好&#xff0c;今天咱们来讲一下&#xff0c;Java 中如何检查一个字符串是否是合法的日期格式&#xff1f;为什么要检查时间格式&#xff1f;后端接口在接收数据的时候&#xff0c;都需要进行检查。检查全部通过后&#xff0c;才能够执行业务逻辑。对于时间格式&#xff0c…

Redis 实现分布式锁的 7 种方案

前言日常开发中&#xff0c;秒杀下单、抢红包等等业务场景&#xff0c;都需要用到分布式锁。而Redis非常适合作为分布式锁使用。本文将分七个方案展开&#xff0c;跟大家探讨Redis分布式锁的正确使用方式。如果有不正确的地方&#xff0c;欢迎大家指出哈&#xff0c;一起学习一…

css复选框样式_使用CSS样式复选框

css复选框样式Introduction: 介绍&#xff1a; Sometimes we want to develop a website or web page that would contain a form and through that form, we want to get some information from the user. Now that information could be of any type depending on the kind …

javascript对话框_JavaScript中的对话框

javascript对话框JavaScript对话框 (JavaScript Dialog Boxes) Dialog boxes are a great way to provide feedback to the user when they submit a form. In JavaScript, there are three kinds of Dialog boxes, 对话框是向用户提交表单时提供反馈的好方法。 在JavaScript中…

排查死锁的 4 种工具,秀~

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;死锁&#xff08;Dead Lock&#xff09;指的是两个或两个以上的运算单元&#xff08;进程、线程或协程&#xff09;&#xf…

MySQL 常见的 9 种优化方法

大家好&#xff0c;我是磊哥&#xff01;今天给大家分享一些简单好用的数据库优化方式&#xff01;1、选择最合适的字段属性Mysql是一种关系型数据库&#xff0c;可以很好地支持大数据量的存储&#xff0c;但是一般来说&#xff0c;数据库中的表越小&#xff0c;在它上面执行的…

oracle中dbms_DBMS中的实例和架构

oracle中dbms1)实例 (1) Instances) What is the Instance? If we look towards it in real life, we refer instance as an occurrence of something at a particular moment of time. In Database Management system, there are a lot of changes occurring over time to th…

过滤器和拦截器的 5 个区别!

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;都是基于 AOP&#xff08;Aspec…

面试突击第一季完结:共 91 篇!

感谢各位读者的支持与阅读&#xff0c;面试突击系列第一季到这里就要和大家说再见了。希望所写内容对大家有帮助&#xff0c;也祝你们找到满意的工作。青山不改&#xff0c;细水长流&#xff0c;我们下一季再见&#xff01;91&#xff1a;MD5 加密安全吗&#xff1f;90&#xf…

SpringBoot官方热部署和远程调试神器

平时使用SpringBoot开发应用时&#xff0c;修改代码后需要重新启动才能生效。如果你的应用足够大的话&#xff0c;启动可能需要好几分钟。有没有什么办法可以加速启动过程&#xff0c;让我们开发应用代码更高效呢&#xff1f;今天给大家推荐一款SpringBoot官方的热部署工具spri…

MySQL 优化:Explain 执行计划详解

昨天中午在食堂&#xff0c;和部门的技术大牛们坐在一桌吃饭&#xff0c;作为一个卑微技术渣仔默默的吃着饭&#xff0c;听大佬们高谈阔论&#xff0c;研究各种高端技术&#xff0c;我TM也想说话可实在插不上嘴。聊着聊着突然说到他上午面试了一个工作6年的程序员&#xff0c;表…

顶级 Javaer 常用的 14 个类库

作者&#xff1a;小姐姐味道昨天下载下来Java16尝尝鲜。一看&#xff0c;好家伙&#xff0c;足足有176MB大。即使把jmc和jvisualvm给搞了出去&#xff0c;依然还是这么大&#xff0c;真的是让人震惊不已。但即使JDK足够庞大&#xff0c;它的功能也已经不够用了。我们需要借助于…

势头迅猛的儿童手表:恐陷下一个文曲星之地?

历史的节奏&#xff0c;就是不断重复此前发生过的事。虽然表现形态不一&#xff0c;但蕴藏的规律、趋势总是有着惊人的相似。在科技行业&#xff0c;同样如此——iPhone开启的智能手机时代走过的大兴—→平稳→下降态势&#xff0c;与PC的历程几乎是一样的。而在国内&#xff0…

scala 类中的对象是类_Scala中的类和对象

scala 类中的对象是类Scala中的课程 (Classes in Scala) A class is a blueprint for objects. It contains the definition of all the members of the class. There are two types of members of the class in Scala, 类是对象的蓝图。 它包含该类的所有成员的定义。 Scala中…