前言
作为一名java开发工程师,IDEA无疑是我日常接触最多的工具。因此,能否高效使用IDEA软件,一定程度上决定了我们的开发效率。本文将主要介绍IDEA中的四个便于提高开发效率的功能,常用快捷键、实时模版、后缀补全、文件和代码模版。相信一定会对你提升开发效率有所帮助。
常用快捷键
cmd + shift + R
可以针对所有文件中的同名变量进行全局替换。
cmd + shift + F
全局搜索特定内容。适用于我们检索特定方法在哪里被调用,相同变量在哪里被使用等。
double shift(双击shift)
double shift 快捷键结合了很多功能,这里我主要描述三个常见用法:
1、搜索错误栈对应位置
com.example.demo.base.MyException: 我的包装异常
Caused by: java.lang.ArithmeticException: / by zero
at com.example.demo.controller.TestController.testPenError(TestController.java:63) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.18.jar:5.3.18]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.18.jar:5.3.18]
日常排查问题时,我们得先看错误栈找到错误类及错误方法,再找到错误的具体行。以上述错误为例,要找到这个方法的报错地方,得先找到TestController类,再根据方法名字定位到testPenError(),再根据错误行数定位到是方法的第63行。
有了double shift后,我们的工作就变得很简单了,只要拷贝下TestController.java:63
,再通过双击shift就可以快速转到对应的错误行数了。
2、搜索url对应接口
日常在跟别人核对接口的时候,由于接口的数量众多,往往一下难以确定接口所属文件的所在位置。好在double shift可以搜索接口路径url,从而快速定位到相应文件位置。
3、copyRefrence快速定位
在查看别人给的枚举类、方法时,也许会收到这样的内容:java.util.concurrent.TimeUnit#SECONDS
。这其实是用IDEA的拷贝引用实现的。
那么,如何针对这样的引用快速找到相应的对象呢?可以采用cmd+shift+R
的方式做全局搜索,但最好的方法还是用double shift
直接搜索,IDEA会定位到引用的具体位置。
cmd+N
快速生成方法,这个快捷键主要用于对类方法进行生成的情况,方法包括但不限于生成类的构造方法、重载父类方法、getter与setter方法。
option + 回车
Option + 回车,是IDEA提供的对于编译性错误、常见代码问题的解决提示。毋庸置疑,这个是IDEA最强大的快捷键之一,能够针对系统编译出现的问题做快速提示,并供使用者选择。
上述是一个新建MyException的例子。在构建对象的时候,IDEA没有找到对应的构造方法,因此出现了错误。通过按下option + 回车,IDEA会提示我有两种解决方案:
1、修改现有构造方法为MyException(int, String, String, String)
来解决。
2、新造一个构造方法解决。
通过选择任意一种并回车,IDEA就会按照对应的规则修改/生成相应的构造方法,从而解决代码问题。
Control + T
快速操作变量,这个快捷键可以实现快速修改局部变量名称、局部变量抽取成类变量、局部变量抽取成方法入参等等功能。
如下是一个我用Control + T 实现的快速局部变量名称修改的例子。
实时模版(live template)
实时模版也是idea一个非常厉害的功能,其原理是通过配置常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。通过Perference => Editor => LiveTemplate可以查看当前所有的实时模版。
常见的实时模版有:psvm(可以快速打印一个main方法)、thr(快速抛出异常)、sout(快速输出变量)等。如下是我用psvm模版+sout模版,快速创建main方法的一个示例:
日常开发中,通过psvm
我们可以快速生成main函数。通过mn
可以快速获取两个变量的最小值。通过mx
则可以获取两个变量比较最大值的模版。可以说live Template的作用还是很大的,极大减少了我们的代码。
后缀补全(Postfix Completion)
后缀补全也是一个有效减少代码编写的功能,其使用的方法类似方法调用,通过.后缀公式
的方法,将当前的变量/方法等自动嵌入到我们的特定模版中,从而实现减少重复代码编写的效果。
通过preference=>Editor=>General=>PostfixCompletion,可以查看所有的后缀补全公式。常见的有.var
快速生成变量、.!
快速取反、.lambda
快速生产lambda表达式。
如下是采用.var快速生成变量的一个例子:
可以看到,原本需要先定义变量,再赋值的操作,经过后缀补全的润色后,就可以简单的变成直接写值,再自动生成变量了。这个功能在日常开发的时候很常用,而且熟练之后真的很流程~
文件和代码模版(File and Code Template)
文件和代码模版是Idea提供用于用户自定义生成的文件格式的。其允许用户在创建文件的时候,对格式进行相应的自定义,从而将部分的公用代码抽取出来,减少重复代码的编写。
以枚举类为例子,我们通常创建一个枚举类都会需要执行三个部分:code及desc变量定义、注解方法定义、实际使用数据定义。可以看到,code及desc变量定义和注解方法定义其实大部分是通用的,差异点只在实际使用的数据定义上。
那么通过对枚举类定义一个模版,将不变的方法抽取出来,只关注变化内容(实际数据的编写)的话,就可以节省很多代码的编写。如下是一个我用自己定义的枚举类模块,快速生成枚举类的例子:
可以看到,几乎没有无用代码的编写,效率自然会保证蹭蹭的高~
总结
期望通过对IDEA上述进阶功能的学习,我们未来可以更好的驾驭IDEA的功能,让IDEA不仅仅是完成开发的工具,更应该成为我们提高生产效率的真正利器。毕竟打工路漫漫,能早开发完成就代表我们能多努(mo)力(yu)一点。祝各位永不加班~