【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(重构篇)

2023-11-27 07:40

本文主要是介绍【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(重构篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复“专栏列表”获取全部小而美的原创技术专栏

你好,这里是Java方向盘,我是方向盘(YourBatman),坐稳扶好,开始发车。

TitleLink
所属专栏【方向盘】-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 NameKey
Introduce Variablecommand + option + v

local variable. 引入变量/抽取变量。注意:这里引入/抽取的变量指的本地变量、局部变量。

这个快捷键还是比较常用的,典型的应用场景:

  • 将魔法值抽取成有语义的变量
    在这里插入图片描述
    这里的2和2+3语义就不明确,属于魔法值需要尽量避免的。通过该快捷键就可以抽取本地变量进行描述,如下:
    在这里插入图片描述
  • 将多次出现的值(比如字符串)抽取成为变量,方便阅读和维护
    在这里插入图片描述
Introduce Field
Action NameKey
Introduce Field…command + option + f

field variable. 引入成员变量,也叫属性。值得关注的是:

  • 从static静态方法引入变量,那么成员变量就是static的
  • 从实例方法引入变量,那么成员变量就是非static的
Introduce Constant
Action NameKey
Introduce Constant…command + option + c

constant. 引入常量。该快捷键就非常非常常用喽,毕竟一般来讲魔法值大都可以改为常量来描述,语义更加明确。

Introduce Parameter
Action NameKey
Introduce Parameter…command + option + p

parameter. 抽取为参数(方法入参)。当你发现方法内的某个值不能写死,而是需要通过方法入参传进来的时候,使用此快捷键抽取就非常方便了。
在这里插入图片描述
选中nums后按下此快捷键,即可将其提取到方法参数里,效果如下:
在这里插入图片描述

Extract Method
Action NameKey
Extract Method…command + option + m

method. 抽取方法,显而易见这个快捷键太有用了:将功能抽取为私有方法,增加代码可读性。
在这里插入图片描述

inline
Action NameKey
inline…command + option + n

将分步的代码使用的内联的方式放在一起。和上面抽取是反向的。举例:

觉得fromIndex不需要定义,直接使用2这个值就成:
在这里插入图片描述
选中fromIndex这个变量,按下此快捷键,效果为:
在这里插入图片描述
再看方法inline。觉得getSubList()方法没必要独立出来,希望把逻辑内联聚合在一起:
在这里插入图片描述
选中getSubList方法,然后按下此快捷键,效果为:
在这里插入图片描述
若方法只有一个地方使用,inline后其实就可以remove掉嘛。点击Refactor确定后效果为:
在这里插入图片描述
老实讲,这个快捷键用得其实是比较少的。毕竟大多数情况下,抽取出来独立声明都是会更好些的。但也难免有些为了抽取而抽取,毫无章法、无依据可言的做法,这时“合并”一些代码此快捷键就是一把利器了。

✌Refactor重构

正所谓重构一时爽,出错火葬场。即使它的“风险性”比较高,但相信“有追求”的程序员依旧乐此不疲。

其实Java语言对重构是非常友好的,这是强类型语言的最大优势之一。虽然说重构有风险,但只要让风险相对可控,这件事情是非常有必要去做的。接下来就介绍重构方面的常用功能快捷键。

Rename
Action NameKey
Rename…shift + f6

重命名。

  • 变量(本地变量、成员变量、静态全局变量)重命名
  • 方法重命名
  • 类重命名

结合Java强类型语言的特性,重命名在Java里非常非常非常好用。
在这里插入图片描述
在这里插入图片描述
重命名文件,也是这个快捷键。由于Java文件一般和class类名一样,因此重命名文件对应的类名也会随着变化。
在这里插入图片描述

Change Signature
Action NameKey
Change Signature…command + f6

改变方法签名。鼠标焦点停留在方法签名上,按下此快捷键:
在这里插入图片描述
可以看到这里也可以改变方法名称(重命名),除此之外还有入参、返回值、访问权限、异常声明等等。

Tips:据我了解,不少同学不知道方法签名指的什么,包含哪些要点内容。通过上面这张截图应该了然于胸了吧

Move
Action NameKey
Move…f6

移动静态方法、移动静态全局变量,将它从类A移动到类B。注意:移动的对象必须是static静态的。

比如:希望将getSubList这个静态方法移动到另一个类里面。选中该方法,按下此快捷键:
在这里插入图片描述
填好To目的地的类名,即可完成移动。

Tips:静态成员都可移动,即使访问修饰符是private

Copy
Action NameKey
Copy…command + ⌦

Tips:键盘上的delete是⌫,而⌦是:fn + delete

安全删除。这对很多人来讲可能是一个全新名词,什么是安全删除:确保删除该元素(变量、方法等),不会对程序产生编译错误的影响。

比如我要安全删除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

在这里插入图片描述

我是方向盘(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 staticstatic关键字在Spring里的应用
08【方向盘】-Cors跨域关于跨域请求问题,本专栏足矣
09【方向盘】-JacksonAlmost Maybe是最好的Jackson专栏
10【方向盘】-Spring配置类专讲@Configuration配置类,你懂的
11【方向盘】-Spring技术栈暂无所属小分类的,Spring技术栈大分类
12【方向盘】-JDK暂无所属小分类的,JDK技术栈大分类
13【方向盘】-ServletServlet规范、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

这篇关于【方向盘】使用IDEA的60+个快捷键分享给你,权为了提效(重构篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/427300

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学