本文已被https://yourbatman.cn收录;女娲Knife-Initializr项目可公开访问;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复获得所有小而美的技术专栏
你好,这里是Java方向盘,我是,坐稳扶好,开始出发。
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关于代码补充的快捷键,感受到了IDEA强大的对比功能eclipse了解两者之间的差距,IDEA成功是有原因的。
在敲击代码的过程中,代码总是被改变,不可避免地会经常出现提取变量、提取方法、重命名、移动位置等动作,此时如果充分利用Java强型语言的特点,加上本文要介绍的快捷键,可以事半功倍。
?正文
大多数时候,我们优化代码,不是因为我们不能,而是因为我们不想移动,不敢移动。如何打破这种情况的基本方法是充分利用工具,帮助我们确保一些正确性,减少不必要的重复劳动,然后提高效率和质量。
熟练使用本文介绍的快捷键,可能可以让你解决代码的坏味道,提高代码的可读性,产生价值。
IntelliJ IDEA快捷键
?Extract抽取
你有没有吐槽过:这个代码中的0是什么意思?1是什么意思?20是什么意思?
此时,代码需要优化和对某些值进行优化,以增加代码可读性,方便维护。下面介绍这些实用的快捷键。
Introduce Variable
Action Name | Key |
---|---|
Introduce Variable | command option v |
local v
ariable. 引入变量/提取变量。注:引入/提取的变量是指本地变量和局部变量。
这个快捷键更常用,典型的应用场景:
- 将魔法值提取成语义变量 这里的2和2 3.语义不清楚,魔法值需要尽可能避免。本地变量可以通过快捷键提取描述,如下:
- 将多次出现的值(如字符串)提取成变量,便于阅读和维护
Introduce Field
Action Name | Key |
---|---|
Introduce Field… | command option f |
f
ield variable. 引入成员变量,又称属性。值得注意的是:
- 从static如果静态方法引入变量,则成员变量为static的
- 从实例方法引入变量,成员变量是非static的
Introduce Constant
Action Name | Key |
---|---|
Introduce Constant… | command option c |
c
onstant. 引入常量。快捷键非常非常常用。毕竟一般来说,魔法值可以改为常量来描述,语义更清晰。
Introduce Parameter
Action Name | Key |
---|---|
Introduce Parameter… | command option p |
p
arameter. 抽取为参数(方法入参)。当你发现方法内的某个值不能写死,而是需要通过方法入参传进来的时候,使用此快捷键抽取就非常方便了。 选中nums按下此快捷键后,即可将其提取到方法参数中,效果如下:
Extract Method
Action Name | Key |
---|---|
Extract Method… | command option m |
m
ethod. 显然,这个快捷键太有用了:将功能提取为私有方法,增加代码可读性。
inline
Action Name | Key |
---|---|
inline… | command option n |
将使用分步代码的内联方式放在一起。上面的提取是。举例:
觉得fromIndex不需要定义,直接使用2此值: 选中fromIndex按下变量,按下这个快捷键,效果如下: 再看方法inline。觉得getSubList()方法不需要独立,希望将逻辑内部结合在一起: 选中getSubList方法,然后按下此快捷键,效果如下: 若该方法只在一个地方使用,inline以后就可以了remove掉嘛。点击Refactor确定后效果如下: 说实话,这个快捷键实际上用得更少。毕竟,在大多数情况下,最好提取独立声明。然而,不可避免地会有一些实践是为了提取而提取的规则和依据。此时,合并一些代码。这个快捷键是一个锋利的武器。
?Refactor重构
正所谓重构一时爽,出错火葬场。即使它的“风险性”比较高,但相信“有追求”的程序员依旧乐此不疲。
其实Java语言对重构是非常友好的,这是强类型语言的最大优势之一。虽然说重构有风险,但只要让风险相对可控,这件事情是非常有必要去做的。接下来就介绍重构方面的常用功能快捷键。
Rename
Action Name | Key |
---|---|
Rename… | shift + f6 |
重命名。
- 变量(本地变量、成员变量、静态全局变量)重命名
- 方法重命名
- 类重命名
- …
结合的特性,重命名在Java里非常非常非常好用。 ,也是这个快捷键。由于Java文件一般和class类名一样,因此重命名文件对应的类名也会随着变化。
Change Signature
Action Name | Key |
---|---|
Change Signature… | command + f6 |
改变方法签名。鼠标焦点停留在方法签名上,按下此快捷键: 可以看到这里也可以改变(重命名),除此之外还有入参、返回值、访问权限、异常声明等等。
Tips:据我了解,不少同学不知道指的什么,包含哪些要点内容。通过上面这张截图应该了然于胸了吧
Move
Action Name | Key |
---|---|
Move… | f6 |
移动静态方法、移动静态全局变量,将它从类A移动到类B。注意:移动的对象必须是静态的。
比如:希望将getSubList这个静态方法移动到另一个类里面。选中该方法,按下此快捷键: 填好To目的地的类名,即可完成移动。
Tips:静态成员都可移动,即使访问修饰符是private
Copy
Action Name | Key |
---|---|
Copy… | command + ⌦ |
。这对很多人来讲可能是一个全新名词,什么是安全删除:确保删除该元素(变量、方法等),不会对程序产生编译错误的影响。
比如我要安全删除getSubList方法,按下此快捷键就会弹出如下窗口: 点击ok,若没有其它地方使用了,就删掉了;倘若检查到该方法别的地方还有使用,就会继续弹窗告知你,然后让你再做决策,防止误删: 如果你是在做一个比较重要、敏感的删除动作(比如修改线上代码分支),那么就不要怕麻烦,使用安全删除确实会更安全一些,也自然而然的会提高你的重视程度。
不过,一般来讲,使用普通删除即可,方便快捷。
✍总结
本文继续介绍了IDEA 相关的快捷键,结合Java强类型语言的特性,正确的使用IDEA提供的重构功能,能够控制风险,大大降低重构的“难度”呀。在我认为,一个coder需要提升,就应该“多多重构”自己的or别人的代码,这时本文的这套快捷键你值得拥有。
还是补上那句话:快捷键没有任何技巧性,练就完了!下篇继续介绍Intellij IDEA的实用快捷键。那,咱们还是下次再见!
推荐阅读
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(代码补全篇)
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(运行/调试篇)
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(视窗、选择篇)
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(IDEA导航篇)
- 【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(操作系统、终端篇)
- 【方向盘】超爱的IDEA提效神器Save Actions,卸载了
- 【方向盘】利用IDEA代码审查能力,来保证代码质量
- 【方向盘】是如何高效的使用IntelliJ IDEA
我是:前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 | 大多数专栏均配有源代码,都在这里 |
- 源代码库地址:https://github.com/yourbatman/tech-column-learning
- CSDN主页:https://blog.csdn.net/f641385712
- 掘金主页:https://juejin.cn/user/430664289367192
- 博客园主页:https://www.cnblogs.com/yourbatman
- 个人博客主页:https://yourbatman.cn
- 个人网盘主页:https://wangpan.yourbatman.cn