工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试?

本文转载自:netty技术内幕

3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再次让人眼前一亮:什么,还能这么玩?

下面,我们来快速了解一下 IDEA 2018.1 最新版本给我们带来哪些惊喜

1. stream代码自动生成更智能

IDEA对java代码的自动化生成令人惊叹,一个alt+enter或者alt+/可以省去很多敲打键盘的操作。本次更新对stream api的支持更加智能化,如上图,如果对一个list filer掉指定的type之后,在后续的map操作中,自动给你加上一个cast。

2. while循环优化

IDEA智能检测代码逻辑,将原本丑陋的代码自动改写,while优化也是继承自此理念。上图中展示的是,while if break 逻辑,直接修改成do while,代码颜值和易理解程度明显提升。

3. 优化多余的资源关闭操作

使用过IDEA的同学可能会经常看到代码里面有灰色的代码,这就提示你,这段代码是多余了,不可达的代码,可以删掉,代码更干净整洁。上图中展示的是,当你已经使用了try resource的方式来自动关闭资源,没有必要再手动调用一次close,显示成灰色,alt+enter一键自动删除。

4. 字符串数组自动排序

这个功能也是非常贴心,不得不佩服jetbrain对产品细节的打磨。如果你代码里面有一堆字符串常量,想做一个简单的按字母排序,只需要在数组上按下alter+enter,然后sort conetnt,IDEA会自动排序,秒级完成。

5. 拷贝构造函数完整性提示

拷贝构造函数在实际项目开发过程中也是比较常见的,通过同一个类的对象,生成另外一个对象,这个过程中,如果少set了一个属性,在后续的逻辑中很容易出现NPE。上图展示的是,当你实现拷贝构造函数的时候,忘了拷贝 myFileFiltermyForcedToUseIdeaFileChooser这两个属性,IDEA会给你智能提示,让你修改。

6. postfix支持自定义模板

postfix可以说是IDEA里面最有特色的一大功能,和live template并驾齐驱,完成一些非常快速的操作,关于这两个强大的功能可以翻到文末我之前录制的视频课程,这里不过多介绍。在这之前,我一直觉得postfix比不上live template,是因为他不支持自定义模板,一直想不通为什么jetbrain不开发这个功能来提高postfix的地位,没想到2018.1终于实现了自定义模板。

上图中,自定义了 .do这个postfix,我们在敲了一个表达式之后,唤出 .do这个postfix,IDEA自动送你一个do while循环,并且随后光标自动跳转到你接下来需要书写逻辑的地方,棒不棒?

7. 自定义类生成文件名前后缀

这个功能是IDEA对自动生成类文件的增强,IDEA的自动生成类文件,举两个简单的例子

  1. 你创建好一个接口之后,直接在接口名处按下alt+enter,动一动上下键,一路按回车,可以给你自动生成这个接口的实现,默认后缀为Impl

  2. 你要对当前类写个UT,直接在当前类下按下cmd+shift+t,一路按回车,动一动上下键,空格键,可以给你自动生成这个类的UT,默认后缀为Test

之前这个默认值在IDEA中是不能修改的,新版本不仅可以修改这个默认后缀,甚至连默认前缀也可以修改,自由度更高,可以让自动生成的类更加贴合你的代码风格

8. debug异常模拟

IDEA的debug功能可以说让我爱不释手,无论是bug的排查,源码的阅读,超多惊艳的功能几乎每次都能让你瞬间定位关键代码。在之前的版本,IDEA已经实现了表达式(段落)求值,动态值修改,force return等强悍的调试功能,新版增加了Exception模拟功能。debug的时候,你可以在任意一个地方,模拟异常的抛出,这在验证代码的异常完备性方面非常有用。

9. 断点栈轨迹

在阅读netty源码的过程中,我最喜欢的功能就是使用IDEA的调用栈迅速了解某段代码执行的上下文环境,调用栈被挂起之后,只需要动一动上下方向键,就可以快速熟悉这段代码的执行路径。

 新版本中,如上图,IDEA对breakpoint的功能得到进一步的增强,让你的断点调试在控制台留下轨迹,每经过一个断点,都会在控制台打印出这个断点的调用栈,下次,可以不用调试你就能知道断点处的代码原始的调用链是什么。

10. 更强大的全局文本替换

IDEA对文本的处理可以说是相当强悍了,无论搜索还是替换,可以自定义范围,文件名,甚至支持预览效果。新版本对全局文本替换功能进行进一步的扩充,上图展示的是,你想把所有 xxController文件替换成 xxProducer,直接上两段正则表达式就可以迅速完成,并且在窗口下方实时预览修改后的效果。

11. SpringBoot整合进一步优化

IDEA和Spring的整合可以说是天衣无缝,Spring IOC和AOP的特性在IDEA中得到了充分的可视化体现,无比强大的关联功能让人叹为观止,详细可以翻到文末我录制的视频。

 新版本更是对SpringBoot的整合达到了一种登峰造极的程度。上面图展示的是,当你的SpringBoot应用启动之后,在所有对外提供API的方法,你都可以直接点个鼠标就可以发起HTTP调用,发起HTTP调用有两种方式:

  1. 一种方式是直接发起调用,不用手动输入url,调用之后结果直接展示在控制台

  2. 另外一种调用方式更为强大,IDEA给你自动给你生成一个.http文件,这个文件里面,你可以自定义http请求的参数,url,并且每一次调用的结果都保存为一个文本文件,甚至可以进行调用结果的对比。

12. git部分提交与changelist

IDEA对git的可视化支持以及各种快速便捷的操作在代码冲突解除、开源代码历史版本追溯、code review发挥了强大的作用,你根本不需要第二个可视化版本控制工具。在IDEA的版本控制管理的概念里有一个changelist的术语,指的是,你可以把每一处更改扔到不同的变更集合里,提交代码的时候,你可以选择不同的变更集合进行提交,剩下的变更集合,变更还在,但是不会提交到仓库中。这个应用场景是,比如,你遇到一个新项目,想快速了解这个项目,你可以随意做修改,把这些修改扔到一个自定义的changelist中,而在真正完成task的时候(一般刚开始接触新项目,实现的需求都比较简单,几行代码搞定),把需求实现的变更集进行提交即可,之前的实验代码可以留在你的项目中,你可以进一步地做实验。

本次版本的更新,细粒度版本控制得到了进一步的增强,上面这幅图展示的是,你在提交代码的时候,窗口右半侧左边栏,每一处改动都会有一个单选框,如果你在code review的时候,不想提交某一处改动,只需要把前面的单选框取消勾选即可,这样,结果就是,代码还在本地项目中,但是不会提交到版本库。

此外,你还可以把你不想提交的代码扔到一个自定义changelist里,代码还在,但是不会提交,如上图。

13. git历史记录增强

在阅读netty源码的过程中,有的时候我会发现注释和代码逻辑牛头不对马嘴,于是,我使用了IDEA的git历史记录功能之后发现,原来这段注释是应用在很久之前的代码上的,老代码注释一直未删除,这也说明了你在阅读开源项目的时候,不要盲目相信权威,要多思考,要相信自己的判断。

 本次git的历史记录的增强,指的是,你在阅读某个版本的代码,想了解这个版本中的某一个文件的提交历史,你可以直接在这个文件上右键,然后查看针对当前版本,查看这个文件的提交历史,所有的改动一览无余。

14. 弹出式javadoc

对的,新版本IDEA终于支持弹出式java doc了,当你鼠标放到某个方法,参数,类型上去的时候,自动给你弹出对应的文档的解释,并且给出文档表现形式是经过美化的。

15. Kubernetes支持

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过程中的任何问题,欢迎加入我的星球,我会在此不定期分享阅读源码的各类技巧,每个技巧均立竿见影

阿里云1C2G虚拟机【99/年】羊毛党集合啦!

推荐阅读

  • 自建API网关「架构设计篇」

  • Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(续)

  • Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

  • Spring Boot使用@Async实现异步调用:线程池的优雅关闭

  • Spring Boot使用@Async实现异步调用:自定义线程池

  • Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

  • Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

  • Spring Boot 2.0正式发布,升还是不升呢?

  • Spring Boot 2.0 新特性概览

  • Spring Boot/Cloud干货汇总

长按指纹

一键关注



深入交流、更多福利

扫码加入我的知识星球


点击 “阅读原文” 看看本号其他精彩内容

IntelliJ IDEA 2018.1正式发布!什么?还能这么玩?相关推荐

  1. IntelliJ IDEA 2018.1新特性

    2019独角兽企业重金招聘Python工程师标准>>> 工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 ...

  2. IntelliJ IDEA 2019.1 正式发布;互联网公司外卖报告

    (给技术最前线加星标,每天看技术热点) 转自:开源中国.solidot.cnBeta.腾讯科技.快科技等 [技术资讯] 0.IntelliJ IDEA 2019.1 正式发布,"JetBra ...

  3. IntelliJ Idea 2020.1 正式发布,官方支持中文了

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  4. IntelliJ IDEA 2018.2 发布,支持 Java 11

    转载自   IntelliJ IDEA 2018.2 发布,支持 Java 11 近期,JetBrains发布了其旗舰产品IntelliJ IDEA的2018.2版本.新版本支持即将推出的Java 1 ...

  5. 功能强大!IntelliJ IDEA 2022.1正式发布

    文 | 罗奇奇 出品 | OSC开源社区(ID:oschina2013) IntelliJ IDEA 2022.1 正式发布了,该版本的重点功能是:引入了 Dependency Analyzer 以促 ...

  6. IntelliJ IDEA 2021.2 正式发布

    IntelliJ IDEA 2021.2 正式发布啦!快来看看有哪些更新内容是你感兴趣的吧~ 关键更新: 新的项目范围的分析允许开发者在编译前跟踪整个小型或中型项目的错误,这个功能只能够在 Intel ...

  7. IntelliJ IDEA 2018.2支持Java 11、MacBook Touch Bar等新特性

    近期,JetBrains发布了其旗舰产品IntelliJ IDEA的2018.2版本.新版本支持即将推出的Java 11.断点意图(Breakpoints Intentions).MacBook的To ...

  8. IntelliJ IDEA 2018.3 安装、永久破解及新特性说明

    文章目录 一.下载 二.安装 三.破解 四.新特性说明 五.实用技巧 一.下载 前往 IntelliJ IDEA官网 下载Ultimate版本(IntelliJ IDEA官网会默认选择适合当前操作系统 ...

  9. 如何在Linux系统下的IntelliJ IDEA 2018.3.5下载与安装以及激活教程

    如何在Linux系统下的IntelliJ IDEA 2018.3.5下载与安装以及激活教程 作者:张国军_Suger 开发工具与关键技术:VMware Workstation Pro.Linux系统( ...

最新文章

  1. 功率谱估计性能分析及matlab仿真,功率谱估计性能分析及Matlab仿真.doc
  2. hdu-1114 Piggy-Bank
  3. leetcode解题记录(二)
  4. 巴西教育科技公司Arco Educacao上市 融资1.95亿美元
  5. 你还认为中国没有桌面虚拟化核心技术?
  6. 目标检测之Mtcnn网络详解(人脸检测)
  7. 交换机端口配置与管理
  8. 安装php_sqlsrv扩展
  9. css clear属性 的深入了解
  10. 国内外常用计算机杀毒软件,国外杀毒软件排行榜(国内的不要)
  11. java中小数位数的限制,Java中限制小数位数有关问题
  12. CAS单点登录:CAS客户端搭建(整合Shiro和Spring Boot)
  13. 回文串----蘑菇街2016校园招聘
  14. MySQL 视图、索引、外键关联策略
  15. 建模师能干到多少岁?
  16. dubbo-dubbo spi详解
  17. HTML5期末大作业:服装商城网站设计——2021凡客服装商城(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web前端设计与开发期末作品/期末大作业
  18. yolov8 OpenCV DNN 部署 推理报错
  19. 科学家「黑进」果蝇大脑跑NLP任务,发现效率比BERT高
  20. Linux安装apache

热门文章

  1. 得到 ip/掩码 的起始结束地址
  2. Linux EOF 输入流
  3. VS中遇到 _WIN32_WINNT not defined
  4. 标志寄存器的详细解释
  5. C函数 mktemp
  6. 两个数之和等于第三个数
  7. Linux2.6内核--内存管理(1)--分页机制
  8. UNIX中的Poll函数
  9. Android开发--图形图像与动画(二)--Animation实现图像的 渐变 缩放 位移 旋转
  10. android 弹出编辑框,Android编程实现的EditText弹出打开和关闭工具类