工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试?
3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再次让人眼前一亮:什么,还能这么玩?
下面,我们来快速了解一下 IDEA 2018.1 最新版本给我们带来哪些惊喜
IDEA对java代码的自动化生成令人惊叹,一个alt+enter或者alt+/可以省去很多敲打键盘的操作。本次更新对stream api的支持更加智能化,如上图,如果对一个list filer掉指定的type之后,在后续的map操作中,自动给你加上一个cast。
IDEA智能检测代码逻辑,将原本丑陋的代码自动改写,while优化也是继承自此理念。上图中展示的是,while if break 逻辑,直接修改成do while,代码颜值和易理解程度明显提升。
使用过IDEA的同学可能会经常看到代码里面有灰色的代码,这就提示你,这段代码是多余了,不可达的代码,可以删掉,代码更干净整洁。上图中展示的是,当你已经使用了try resource的方式来自动关闭资源,没有必要再手动调用一次close,显示成灰色,alt+enter一键自动删除。
这个功能也是非常贴心,不得不佩服jetbrain对产品细节的打磨。如果你代码里面有一堆字符串常量,想做一个简单的按字母排序,只需要在数组上按下alter+enter,然后sort conetnt,IDEA会自动排序,秒级完成。
拷贝构造函数在实际项目开发过程中也是比较常见的,通过同一个类的对象,生成另外一个对象,这个过程中,如果少set了一个属性,在后续的逻辑中很容易出现NPE。上图展示的是,当你实现拷贝构造函数的时候,忘了拷贝 myFileFilter
和 myForcedToUseIdeaFileChooser
这两个属性,IDEA会给你智能提示,让你修改。
postfix可以说是IDEA里面最有特色的一大功能,和live template并驾齐驱,完成一些非常快速的操作,关于这两个强大的功能可以翻到文末我之前录制的视频课程,这里不过多介绍。在这之前,我一直觉得postfix比不上live template,是因为他不支持自定义模板,一直想不通为什么jetbrain不开发这个功能来提高postfix的地位,没想到2018.1终于实现了自定义模板。
上图中,自定义了 .do
这个postfix,我们在敲了一个表达式之后,唤出 .do
这个postfix,IDEA自动送你一个do while循环,并且随后光标自动跳转到你接下来需要书写逻辑的地方,棒不棒?
这个功能是IDEA对自动生成类文件的增强,IDEA的自动生成类文件,举两个简单的例子
- 你创建好一个接口之后,直接在接口名处按下alt+enter,动一动上下键,一路按回车,可以给你自动生成这个接口的实现,默认后缀为Impl
- 你要对当前类写个UT,直接在当前类下按下cmd+shift+t,一路按回车,动一动上下键,空格键,可以给你自动生成这个类的UT,默认后缀为Test
之前这个默认值在IDEA中是不能修改的,新版本不仅可以修改这个默认后缀,甚至连默认前缀也可以修改,自由度更高,可以让自动生成的类更加贴合你的代码风格
IDEA的debug功能可以说让我爱不释手,无论是bug的排查,源码的阅读,超多惊艳的功能几乎每次都能让你瞬间定位关键代码。在之前的版本,IDEA已经实现了表达式(段落)求值,动态值修改,force return等强悍的调试功能,新版增加了Exception模拟功能。debug的时候,你可以在任意一个地方,模拟异常的抛出,这在验证代码的异常完备性方面非常有用。
在阅读netty源码的过程中,我最喜欢的功能就是使用IDEA的调用栈迅速了解某段代码执行的上下文环境,调用栈被挂起之后,只需要动一动上下方向键,就可以快速熟悉这段代码的执行路径。
新版本中,如上图,IDEA对breakpoint的功能得到进一步的增强,让你的断点调试在控制台留下轨迹,每经过一个断点,都会在控制台打印出这个断点的调用栈,下次,可以不用调试你就能知道断点处的代码原始的调用链是什么。
IDEA对文本的处理可以说是相当强悍了,无论搜索还是替换,可以自定义范围,文件名,甚至支持预览效果。新版本对全局文本替换功能进行进一步的扩充,上图展示的是,你想把所有 xxController
文件替换成 xxProducer
,直接上两段正则表达式就可以迅速完成,并且在窗口下方实时预览修改后的效果。
IDEA和Spring的整合可以说是天衣无缝,Spring IOC和AOP的特性在IDEA中得到了充分的可视化体现,无比强大的关联功能让人叹为观止,详细可以翻到文末我录制的视频。
新版本更是对SpringBoot的整合达到了一种登峰造极的程度。上面图展示的是,当你的SpringBoot应用启动之后,在所有对外提供API的方法,你都可以直接点个鼠标就可以发起HTTP调用,发起HTTP调用有两种方式:
- 种方式是直接发起调用,不用手动输入url,调用之后结果直接展示在控制台
- 另外一种调用方式更为强大,IDEA给你自动给你生成一个.http文件,这个文件里面,你可以自定义http请求的参数,url,并且每一次调用的结果都保存为一个文本文件,甚至可以进行调用结果的对比。
IDEA对git的可视化支持以及各种快速便捷的操作在代码冲突解除、开源代码历史版本追溯、code review发挥了强大的作用,你根本不需要第二个可视化版本控制工具。在IDEA的版本控制管理的概念里有一个changelist的术语,指的是,你可以把每一处更改扔到不同的变更集合里,提交代码的时候,你可以选择不同的变更集合进行提交,剩下的变更集合,变更还在,但是不会提交到仓库中。这个应用场景是,比如,你遇到一个新项目,想快速了解这个项目,你可以随意做修改,把这些修改扔到一个自定义的changelist中,而在真正完成task的时候(一般刚开始接触新项目,实现的需求都比较简单,几行代码搞定),把需求实现的变更集进行提交即可,之前的实验代码可以留在你的项目中,你可以进一步地做实验。
本次版本的更新,细粒度版本控制得到了进一步的增强,上面这幅图展示的是,你在提交代码的时候,窗口右半侧左边栏,每一处改动都会有一个单选框,如果你在code review的时候,不想提交某一处改动,只需要把前面的单选框取消勾选即可,这样,结果就是,代码还在本地项目中,但是不会提交到版本库。
此外,你还可以把你不想提交的代码扔到一个自定义changelist里,代码还在,但是不会提交,如上图。
在阅读netty源码的过程中,有的时候我会发现注释和代码逻辑牛头不对马嘴,于是,我使用了IDEA的git历史记录功能之后发现,原来这段注释是应用在很久之前的代码上的,老代码注释一直未删除,这也说明了你在阅读开源项目的时候,不要盲目相信权威,要多思考,要相信自己的判断。
本次git的历史记录的增强,指的是,你在阅读某个版本的代码,想了解这个版本中的某一个文件的提交历史,你可以直接在这个文件上右键,然后查看针对当前版本,查看这个文件的提交历史,所有的改动一览无余。
对的,新版本IDEA终于支持弹出式java doc了,当你鼠标放到某个方法,参数,类型上去的时候,自动给你弹出对应的文档的解释,并且给出文档表现形式是经过美化的。
IDEA之所以如此优秀,是因为jetbrain一直会关注行业的最新动态,迅速实现对java生态圈中热门技术的整合。我记得当年Docker刚火起来的时候,IDEA就已经开始对Docker的整合了,并且在每个版本里面迅速迭代,目前IDEA对docker的支持已经做得非常出色了。
上图展示的是IDEA对Kubernetes的支持,只敲了几个字母,一个Kubernetes资源文件模板就生成了,然后,一个批量编辑,光标自动定位,一个完整的资源文件就已经写完了,IDEA在2018.1版本中对Kubernetes的支持做了非常多的增强,感兴趣的同学可以看下官网博客的专题介绍
以上就是我对本次 版本更新的解读,如果你非常迫切想提升开发效率,提升代码质量,可以阅读我总结IntelliJ IDEA 系列文章。
欢迎关注博主公众号:Java十分钟