工欲善其事必先利其器,若是有一款IDE可让你更高效地专一于开发以及源码阅读,为何不试一试?java
本文转载自:netty技术内幕git
3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再次让人眼前一亮:什么,还能这么玩?正则表达式
下面,咱们来快速了解一下 IDEA 2018.1 最新版本给咱们带来哪些惊喜docker
IDEA对java代码的自动化生成使人惊叹,一个alt+enter或者alt+/能够省去不少敲打键盘的操做。本次更新对stream api的支持更加智能化,如上图,若是对一个list filer掉指定的type以后,在后续的map操做中,自动给你加上一个cast。api
IDEA智能检测代码逻辑,将本来丑陋的代码自动改写,while优化也是继承自此理念。上图中展现的是,while if break 逻辑,直接修改为do while,代码颜值和易理解程度明显提高。数组
使用过IDEA的同窗可能会常常看到代码里面有灰色的代码,这就提示你,这段代码是多余了,不可达的代码,能够删掉,代码更干净整洁。上图中展现的是,当你已经使用了try resource的方式来自动关闭资源,没有必要再手动调用一次close,显示成灰色,alt+enter一键自动删除。微信
这个功能也是很是贴心,不得不佩服jetbrain对产品细节的打磨。若是你代码里面有一堆字符串常量,想作一个简单的按字母排序,只须要在数组上按下alter+enter,而后sort conetnt,IDEA会自动排序,秒级完成。intellij-idea
拷贝构造函数在实际项目开发过程当中也是比较常见的,经过同一个类的对象,生成另一个对象,这个过程当中,若是少set了一个属性,在后续的逻辑中很容易出现NPE。上图展现的是,当你实现拷贝构造函数的时候,忘了拷贝
myFileFilter
和 myForcedToUseIdeaFileChooser
这两个属性,IDEA会给你智能提示,让你修改。ide
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的支持作了很是多的加强,感兴趣的同窗能够看下官网博客的专题介绍 https://blog.jetbrains.com/idea/2018/03/intellij-idea-2018-1-kubernetes-support/
以上就是我对本次 IntelliJ IDEA 2018.1 版本更新的解读,若是你很是迫切想提高开发效率,提高代码质量,能够点击阅读原文跳转到个人IDEA系列课程(点到章节tab以后可使用微信登陆观看),免费,看完这个课程以后再来读这篇文章,可能会更容易理解。
最后,若是你想快速提升阅读源码效率,想快速解决你在学习netty过程当中的任何问题,欢迎加入个人星球,我会在此不按期分享阅读源码的各种技巧,每一个技巧均立竿见影