本文已被 https://yourbatman.cn收录; 女娲Knife-Initializr工程可公开访问啦;程序员专用网盘 https://wangpan.yourbatman.cn;技术专栏源代码大本营: https://github.com/yourbatman/tech-column-learning;公号后台回复“ 专栏列表”获取全部小而美的 原创技术专栏
你好,这里是Java方向盘,我是方向盘(YourBatman),坐稳扶好,开始发车。
Title | Link |
---|---|
所属专栏 | 【方向盘】-IntelliJ IDEA |
源代码 | https://github.com/yourbatman/FXP-java-ee |
程序员专用网盘公益上线啦,注册送1G超小容量,帮你实践做减法 | https://wangpan.yourbatman.cn |
Java开发软件包(Mac) | https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit |
女娲工程 | http://152.136.106.14:8761 |
版本约定 | [Mac OS 12.3],[iTerm2 3.4.15(zsh 5.8)],[IntelliJ IDEA 2021.3.3] |
📚前言
一切工具,都是为了提效。效率的提升一般来讲并不改变事务的本质,但足够高的效率也能引起质变,这和程序员熟悉的量变引起质变道理一样。
IDEA作为Javaer的必备神器,几乎每个开发者都在使用。作为(公司内)IDEA的布道者,笔者分享的每篇IDEA相关文章都能受到喜爱,比如最近的两篇:
工具好,也要用得巧。虽说每个Javaer都在用着同一个工具(IDEA),但对工具的使用效率上往往差异较大,可以翻看👆🏻的文章,看看自己是否在低效率的使用它!
本文给你安利一个提效神器:Save Actions,再向你解释下笔者为什么要卸载它!
✍正文
代码风格一致性
开发过程中,当遇到痛点时总希望去寻找相应的工具解决。
在开发项目时,一般都是多人维护一个项目。代码写下去只需要1次,但会被人看几十上百次,所以保持一致的代码规范、代码展示变得非常重要。但是,当团队内多人开发一个项目时,由于每个人的编码习惯、思维习惯、水平、觉悟都高低不一具有多样性,那么如何保证“所有人”的代码风格一致呢?
这个时候就得使用规则了。
相信很多团队各自都有自己的代码规范模板,模板一般是取最大公约数定出来的,比较容易达成一致。毕竟漂亮的东西趋同,只会丑得千奇百怪。定好代码的规范模板后,组员如何能高效的实施呢?这个时候一般要求提交代码之前必须(按照规范模板)格式化处理,进而达到抹平差异,去除掉个人风格,达到统一的目的。
问题又来了:IntelliJ IDEA是自动保存的,因此很多时候你修改了代码之后就出现:代码没有格式化、出现无用的import、无用的变量等一些列“不规范”的问题就保存了/提交了,怎么破?
针对这类痛点,作为开发神器的IDEA怎能想不到。因此它也针对性的提供了相应方案。
✌代码审查
嗯,方式方法都在这里:【方同学】利用IDEA代码审查能力,来保证代码质量
优点:全局扫,大而全
缺点:项目太大时候可能慢。另外,毕竟还是手动的,忘记了就没辙了
✌commit前执行Action
在IDEA的commit窗口栏里,点击如图红色框框里的设置按钮:
每个选项都代表什么功能,单词你都认识,所以不用多余解释了。
优点:在提交前集中式卡点,可做到没有漏网之鱼
缺点:阶段过于靠后。若需要修改,留给RD修改的时间太少了。所以经常会出现妥协式提交
PS:如果你平时提交代码用黑窗口、Smart Git而非IDEA,那就享受不到此“福利”喽
就我个人习惯而言,我不喜欢使用commit这种方式,工作中也很少使用。我认为应该将此动作提前:编辑每个文件保存时就及时触发相应动作,并且是自动的(无需人为干预)。
所以,接下来就引入本文主角:Save Actions。
Save Actions是什么?
直译:保存动作(们)。翻译为保存时触发的动作更为合适~
它其实也就是IDEA的一个插件而已:
简介为:支持可配置的、类似Eclipse的保存操作,包括“优化导入”、“重新格式化代码”、“重新排列代码”、“编译文件”和一些Java快速修复程序,如“添加/删除“this”限定符”,等等。当文件在磁盘上同步(或保存)时,插件将执行配置的操作。
惊不惊喜?这不正是我们需要的功能吗?是的,有了它,再也不用担心团队成员提交没有“处理”过的代码了。
我的常用配置如下截图:
如果你乐意,还可以勾选多个Java检查快速修复功能点(Java Inspection and Quick Fix),我一般不勾。
为何卸载Save Actions?
既然Save Actions这么好用,笔者为何要卸载它呢?一切都要从IDEA的迭代发展说起~
并不是笔者不重视这块了,而是有更好的方式取而代之。笔者从2017年底开始使用IDEA到现在,见证了它的迭代,最近几个版本都有写新特性的文章哦:
- IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德
- IntelliJ IDEA 2020.2正式发布,诸多亮点总有几款能助你提效
- IntelliJ IDEA 2020.1发布,你要的都在这!
- IntelliJ IDEA 2019.3发布,有哪些新特性?
随着IDEA的发展,硬核功能点越来越完善。举个例子:lombok自2015年起逐渐流行开来,因此在IDEA上安装lombok插件也就成了必备动作。既然如此,IDEA在其2020.3
便将lombok插件设为内置,开发者无需再手动安装:
同理,IDEA眼瞅着使用者对自动代码格式化/自动代码检查的需求这么高,索性就将此功能也内置了。值得注意的是:从2021.2版本起才内置哦。
此功能并非以插件形式内置,位置在这: Preferences/Settings | Tools | Actions on Save
以上(勾选的)动作在保存时会自动触发。有了它,我似乎没有理由再留着Save Actions插件,这便是笔者卸载它的根因。
下面对最常用的3个功能进行简述:
✌Reformat code
格式化代码,推荐勾选☑️ 。
格式化代码范围:
- Whole file:整个文件。这是默认选项
- Changed lines:只格式化修改的行(们)。保守点的话,你可以使用此选项
Configure scope:配置范围。支持书写glop patter语法)来自定义需要格式化的代码范围;支持通过@formatter:off/on等方式来控制某段代码不允许/允许格式化。这个自定义的功能怎么说呢,绝大多数情况下用不着这么去自定义,毕竟大大提高了复杂度。
格式化MyBatis的xml文件里的SQL时有时会出问题,这时可以通过加上@formatter:off/on注解来禁止格式化(需要先开启此功能)
✌Optimize import
重新排列import导包。作用:
- 将import按照顺序重新排列(比如static静态导入会放到最后)
- 删除掉无用的import
推荐勾选☑️ 。
✌Rearrange code
重新排列代码,推荐勾选☑️ 。
关于这个功能可能有的同学不太了解,拿Java举个栗子吧。
源代码:
/**
* 在此处添加备注信息
*
* @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a>
* @site https://yourbatman.cn
* @date 2021/8/20 15:06
* @since 0.0.1
*/
public class Demo {
private String name;
public int fun1(){return 0;}
private void fun0(){}
private static void funStatic0(){}
private int age;
public static void funStatic(){}
}
代码保存(触发Optimize import动作)后:
/**
* 在此处添加备注信息
*
* @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a>
* @site https://yourbatman.cn
* @date 2021/8/20 15:06
* @since 0.0.1
*/
public class Demo {
private String name;
private int age;
private static void funStatic0() {
}
public static void funStatic() {
}
public int fun1() {
return 0;
}
private void fun0() {
}
}
这就是重新排列的含义。自上而下排序规则:属性 -> 静态方法 -> 实例方法。
开发工具保持使用最新版
在编程界,坐在第二排看戏被公认不失为一种很好的升级策略:既保证不会过于陈旧享受不到新技术红利,又在稳定性上有所保证。比如:
- JDK版本不要当小白鼠追新
- Spring Boot、中间件版本不要一味追求最新版
- ...
根据我的从业经验,对此观点有所改变,分享出来供你参考:
- 和数据打交道的基础设施层面(如JDK、Spring Boot、MQ、Redis...),尽量保守点,毕竟稳定压倒一切
开发工具类(如IDEA、DataGrid、Navicat...)推荐保持最新版,享受新功能特性带来开发效率上的提升,原因有三
- 1、享受新红利:可能是性能上提升、也可能是新功能来辅助你提升开发效率。毕竟对于软件来讲,新不如旧的可能性极低极低
- 2、keep update能让你对升级不再恐惧。毕竟若从2017年版本一步升级跨入2021年版本,对兼容性方面心里都会打鼓
- 3、开发工具即使出现(重大)bug,对数据不会造成任何影响,况且这个概率极低极低
即使是开发工具升级切勿盲目。至少你得看看升级的feature,是否存在阻断式更新等等...当然,据我了解,以IDEA为例,同学们不升级到最新版的最大阻碍是:无法破解。这个笔者就不多说什么了(毕竟正版IDEA确实比较贵...),是否购买正版自行选择喽~
✍总结
本文旨在输出一个观点:一切工具旨在提效,工具好也要用得巧。正所谓同样一把菜刀,握在米其林餐厅厨师手中和握在街边小炒厨师手中的功效的完全不一样的。
如果你还想了解IntelliJ IDEA
什么内容可留言告诉我互相交流学习哈。当然喽,对于那些“IDEA如何破解?”、“IDEA插件推荐”这类话题,笔者无感的so
推荐阅读
- 【方同学】利用IDEA代码审查能力,来保证代码质量
- 【方同学】是如何高效的使用IntelliJ IDEA
- 【方向盘】IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德
- 【方同学】女娲Knife-Initializr工程可公开访问啦
- 【方向盘】轰动从未停止,感动从未消失。他,是周杰伦
- 【方向盘】阿里巴巴入选的JCP最高执行委员会,何方神圣?
我是方向盘(YourBatman):前25年不会写Hallo World、早已毕业的大龄程序员。高中时期《梦幻西游》骨灰玩家,网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖...是我不可抹灭的黑标签
- 🎓2013.07 清考、毕业答辩3次未通过、延期毕业
- 🏷2013.08-2014.07 宁夏中介公司卖二手房1年,毕业后第1份工作
- ️️🏷2014.07-2015.05 荆州/武汉,泰康人寿卖保险3月、饿了么送外卖2月,还有炸鸡排、直销等第2345份工作
- 🏷2015.08 开始从事Java开发,闯过外包,呆过大厂!擅长抽象思维,任基础架构团队负责人
- 🏷2021.08 因“双减政策”失业!历经9面,终获美团外卖L8的offer
- 🙅🏻♀️Java架构师、Spring开源贡献者、CSDN博客之星年度Top 10、领域建模专家、写作大赛1/2届评委
- 📚高质量代码、规范践行者;DDD领域驱动深度实践;即将出版书籍
《Spring奇淫巧技》
序号 | 专栏名称 | 简介 |
---|---|---|
01 | 【方向盘】-程序人生 | 程序人生,人生程序 |
02 | 【方向盘】-资讯/新特性 | IDEA、JDK、Spring技术栈......新特性 |
03 | 【方向盘】-IntelliJ IDEA | 熟练使用IDEA就相当拥有物理外挂,助你高效编码 |
04 | 【方向盘】-Bean Validation | 熟练掌握数据校验,减少90%的垃圾代码 |
05 | 【方向盘】-日期时间 | 帮你解决JDK Date、JSR 310日期/其实 的一切问题 |
06 | 【方向盘】-Spring类型转换 | Spring类型转换-框架设计的基石 |
07 | 【方向盘】-Spring static | static关键字在Spring里的应用 |
08 | 【方向盘】-Cors跨域 | 关于跨域请求问题,本专栏足矣 |
09 | 【方向盘】-Jackson | Almost Maybe是最好的Jackson专栏 |
10 | 【方向盘】-Spring配置类 | 专讲@Configuration配置类,你懂的 |
11 | 【方向盘】-Spring技术栈 | 暂无所属小分类的,Spring技术栈大分类 |
12 | 【方向盘】-JDK | 暂无所属小分类的,JDK技术栈大分类 |
13 | 【方向盘】-Servlet | Servlet规范、Web相关内容专题 |
14 | 【方向盘】-Java EE | 从Java EE到Jakarta EE,30年弹指一挥间 |
15 | 【方向盘】-工具/提效 | 开发工具、软件工具,目标是提效 |
16 | 【方向盘】-Spring技术栈新特性 | Spring Framework、Spring Boot、Spring Cloud、Spring其它技术 |
17 | 【方向盘】-基本功 | 每个Javaer,都需要有扎实的基本功 |
... | ... | ... |
99 | 源代码库 | 大多数专栏均配有源代码,都在这里 |