如何用IDEA提高你的开发效率

news2024/9/21 2:33:00

前言

​ 作为一名java开发工程师,IDEA无疑是我日常接触最多的工具。因此,能否高效使用IDEA软件,一定程度上决定了我们的开发效率。本文将主要介绍IDEA中的四个便于提高开发效率的功能,常用快捷键、实时模版、后缀补全、文件和代码模版。相信一定会对你提升开发效率有所帮助。

常用快捷键

cmd + shift + R

可以针对所有文件中的同名变量进行全局替换。

在这里插入图片描述

cmd + shift + F

全局搜索特定内容。适用于我们检索特定方法在哪里被调用,相同变量在哪里被使用等。

在这里插入图片描述

double shift(双击shift)

double shift 快捷键结合了很多功能,这里我主要描述三个常见用法:

1、搜索错误栈对应位置

com.example.demo.base.MyException: 我的包装异常
Caused by: java.lang.ArithmeticException: / by zero
	at com.example.demo.controller.TestController.testPenError(TestController.java:63) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.18.jar:5.3.18]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.18.jar:5.3.18]

​ 日常排查问题时,我们得先看错误栈找到错误类及错误方法,再找到错误的具体行。以上述错误为例,要找到这个方法的报错地方,得先找到TestController类,再根据方法名字定位到testPenError(),再根据错误行数定位到是方法的第63行

在这里插入图片描述

​ 有了double shift后,我们的工作就变得很简单了,只要拷贝下TestController.java:63,再通过双击shift就可以快速转到对应的错误行数了。

2、搜索url对应接口

​ 日常在跟别人核对接口的时候,由于接口的数量众多,往往一下难以确定接口所属文件的所在位置。好在double shift可以搜索接口路径url,从而快速定位到相应文件位置。

在这里插入图片描述

3、copyRefrence快速定位

​ 在查看别人给的枚举类、方法时,也许会收到这样的内容:java.util.concurrent.TimeUnit#SECONDS。这其实是用IDEA的拷贝引用实现的。

在这里插入图片描述

​ 那么,如何针对这样的引用快速找到相应的对象呢?可以采用cmd+shift+R的方式做全局搜索,但最好的方法还是用double shift直接搜索,IDEA会定位到引用的具体位置。
在这里插入图片描述

cmd+N

快速生成方法,这个快捷键主要用于对类方法进行生成的情况,方法包括但不限于生成类的构造方法、重载父类方法、getter与setter方法

在这里插入图片描述

option + 回车

​ Option + 回车,是IDEA提供的对于编译性错误、常见代码问题的解决提示。毋庸置疑,这个是IDEA最强大的快捷键之一,能够针对系统编译出现的问题做快速提示,并供使用者选择。

在这里插入图片描述

​ 上述是一个新建MyException的例子。在构建对象的时候,IDEA没有找到对应的构造方法,因此出现了错误。通过按下option + 回车,IDEA会提示我有两种解决方案:

1、修改现有构造方法为MyException(int, String, String, String)来解决。

2、新造一个构造方法解决。

​ 通过选择任意一种并回车,IDEA就会按照对应的规则修改/生成相应的构造方法,从而解决代码问题。

Control + T

快速操作变量,这个快捷键可以实现快速修改局部变量名称局部变量抽取成类变量、局部变量抽取成方法入参等等功能。

在这里插入图片描述

如下是一个我用Control + T 实现的快速局部变量名称修改的例子。
在这里插入图片描述

实时模版(live template)

​ 实时模版也是idea一个非常厉害的功能,其原理是通过配置常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。通过Perference => Editor => LiveTemplate可以查看当前所有的实时模版。
在这里插入图片描述

​ 常见的实时模版有:psvm(可以快速打印一个main方法)、thr(快速抛出异常)、sout(快速输出变量)等。如下是我用psvm模版+sout模版,快速创建main方法的一个示例:

在这里插入图片描述

​ 日常开发中,通过psvm我们可以快速生成main函数。通过mn可以快速获取两个变量的最小值。通过mx则可以获取两个变量比较最大值的模版。可以说live Template的作用还是很大的,极大减少了我们的代码。

后缀补全(Postfix Completion)

​ 后缀补全也是一个有效减少代码编写的功能,其使用的方法类似方法调用,通过.后缀公式的方法,将当前的变量/方法等自动嵌入到我们的特定模版中,从而实现减少重复代码编写的效果。

​ 通过preference=>Editor=>General=>PostfixCompletion,可以查看所有的后缀补全公式。常见的有.var快速生成变量、.!快速取反、.lambda快速生产lambda表达式。

在这里插入图片描述

如下是采用.var快速生成变量的一个例子:
在这里插入图片描述

​ 可以看到,原本需要先定义变量,再赋值的操作,经过后缀补全的润色后,就可以简单的变成直接写值,再自动生成变量了。这个功能在日常开发的时候很常用,而且熟练之后真的很流程~

文件和代码模版(File and Code Template)

​ 文件和代码模版是Idea提供用于用户自定义生成的文件格式的。其允许用户在创建文件的时候,对格式进行相应的自定义,从而将部分的公用代码抽取出来,减少重复代码的编写。

在这里插入图片描述

​ 以枚举类为例子,我们通常创建一个枚举类都会需要执行三个部分:code及desc变量定义、注解方法定义、实际使用数据定义。可以看到,code及desc变量定义注解方法定义其实大部分是通用的,差异点只在实际使用的数据定义上。

在这里插入图片描述

​ 那么通过对枚举类定义一个模版,将不变的方法抽取出来,只关注变化内容(实际数据的编写)的话,就可以节省很多代码的编写。如下是一个我用自己定义的枚举类模块,快速生成枚举类的例子:

在这里插入图片描述

​ 可以看到,几乎没有无用代码的编写,效率自然会保证蹭蹭的高~

总结

​ 期望通过对IDEA上述进阶功能的学习,我们未来可以更好的驾驭IDEA的功能,让IDEA不仅仅是完成开发的工具,更应该成为我们提高生产效率的真正利器。毕竟打工路漫漫,能早开发完成就代表我们能多努(mo)力(yu)一点。祝各位永不加班~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《本地计算机DNS缓存文件》

C:\Windows\System32\drivers\etc 36.152.44.95 www.baidu.com 正常访问www.baidu.com可以DNS抓包,将百度的IP及域名加入文件位置的hosts文件中即该IP和域名将不再请求网络上的DNS服务器,即加快域名解析; 具体作用: 1.加快域名解…

什么是RPC框架?

什么是RPC? In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it wer…

创新能力 | 产品经理实践中常犯的七大错误

做产品是一个既感性又理性的过程,纵然有很多前辈同行的经验传承和技巧指导,但在落到实处是时,总难免犯一些错误。有些是经验不足导致,有些则是产品经理对于人性的浅见寡闻。本文作为产品经理实践指南专题的中级篇,阐述…

用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (2)-走马灯

AWPLC 目前还处于开发阶段的早期,写这个系列文章的目的,除了用来验证目前所做的工作外,还希望得到大家的指点和反馈。如果您有任何疑问和建议,请在评论区留言。 1. 背景 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源…

全球名校AI课程库(35)| 辛辛那提大学 · 微积分Ⅱ课程『MATH101 Calculus II』

🏆 课程学习中心 | 🚧 CS数学基础课程合辑 | 🌍 课程主页 | 📺 中英字幕视频 | 🚀 项目代码解析 课程介绍 Trefor Bazett 教授在 Cincinnati 大学任教时,制作了两套完整的的数学课程(微积分、离…

Eclipse创建Servlet项目-7

目录 1、创建动态 Web 项目 2、使用 Eclipse 创建 Servlet 3、配置 web.xml 4、部署项目并启动服务器 通过前面的学习,我们了解了如何在 Tomcat 目录下手动部署 Servlet,这种方式不但效率低下,而且容易出错。因此,在实际开发中…

变量常量,基本数据类型及数据类型转换

⭐️ 变量常量与基本数据类型及数据类型转换 📍 来自:中南林业科技大学软件协会学术部:谢添 ⏲ 时间:2022 - 10 - 29 至 2022 - 10 - 30 🏠 官网:https://www.csuftsap.cn/ ✏️ 本章所有提供代码均已测…

四旋翼无人机学习第4节--STM32、MPU9250等器件的绘制

0 前言 当画stm32、mpu9250这种多引脚的芯片,就需要参考芯片手册啦。 这里给大家推荐一个芯片手册查询网站。 半导小芯-芯片查询工具 进入网站,输入芯片的具体名称,点击查询即可。 最后点击下载即可。 1 stm32芯片手册引脚查询 选择引脚…

学习在Git项目中使用子模块(图文教程)

一般认为 父项目 是当前正在做的主要工作,但需要依赖 子模块 中提供的算法或者工具。父项目 与 子模块 不是同一批人维护的,或者是需要分开维护的。 此情此景,需要学习该教程了!!! 文章目录1 如何在父项目…

基于Java的一个可自由拖拽的BI可视化系统(附源码)

介绍 这是一个可自由拖拽的BI可视化系统支持主流的关系数据:MySQL,Oracle,PostgreSQL等同时支持Apache Doris,这个一开始初衷就是为了 Doris 数据可视化分析做的后端框架使用了若依 功能 按项目管理数据看板看板具备分享功能可以…

每天五分钟机器学习:超平面分离定理和凸优化

凸集和凸函数 在点集拓扑学与欧几里得空间中,凸集是一个点集,其中每两点之间的直线上的点都落在该点集中。如下所示: 函数任意两点(x,f(x))和(y,f(y))连线上的值大于(x,y)区间内任意一点m的值f(m),那么这个函数就是一个凸函数: 超平面分离定理 空间中存在两类样本,…

【CV】第 3 章:使用 OpenCV 和 CNN 进行面部检测

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

JavaScript语法知识笔记(一)——书写方式,输入出语句,变量,字面量,标识符,数据类型。

01.JS的三种书写方式 <!-- 2.内嵌式的js --><script>// alert(sajmo);</script><!-- 3.外部js script 双标签 --><script src"script.js"></script> <!-- JS代码需要写到script标签中 --><script type"text/jav…

软考高级-系统架构师-案例分析-架构设计真题考点汇总

2010年-2021年(不包括2019年和2020年)涉及到架构设计考点的有: 2010年题1,4; 2011年题1,4; 2012年题1; 2013年题1,4; 2014年题1,4; 2015年题1; 2016年题1; 2017年-题1; 2018年题1,5; 2021年题1 1.软件架构风格 软件架构风格是描述特定软件系统组织方式和惯用模式。组织方式描述…

2022第二届中国高校大数据竞赛A题(更新完毕)

文章目录题目任务做题解析第一问第三问第四问第一个预测第二个预测第五问关键技术摘要代码文件下载题目 制造业是国民经济的主体&#xff0c;近十年来&#xff0c;嫦娥探月、祝融探火、北斗组网&#xff0c;一大批重大标志性创新成果引领中国制造业不断攀上新高度。作为制造业…

公众号网课查题搭建-查题校园题库系统

公众号网课查题搭建-查题校园题库系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台…

Vue项目中Pinia状态管理工具的使用

目录Pinia与Vuex的区别使用Pinia直接修改数据的两种方式使用actions修改数据重置state中数据Pinia持久化存储Pinia模块化实现Pinia中store之间互相调用Pinia官网介绍说&#xff1a;Pinia 是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态。Vuex同样可以作为状态管理工具…

C++ Reference: Standard C++ Library reference: C Library: cstring: memset

C官网参考链接&#xff1a;https://cplusplus.com/reference/cstring/memset/ 函数 <cstring> memset void * memset ( void * ptr, int value, size_t num ); 填充内存块 将ptr指向的内存块的第一个num个字节设置为指定value&#xff08;解释为unsigned char&#xff0…

云原生之k8s--------Kubernetes原理

单机容器编排&#xff1a;docker-compose 容器集群编排&#xff1a;docker swarm&#xff0c;mesosmarathon&#xff0c;kubernetes 应用编排&#xff1a;ansible 一&#xff0c;Kubernets是什么&#xff1f; Kubernetes的缩写为&#xff1a;K8S&#xff0c;这个缩写是因为…

BFC以及清除浮动四种方式

什么是BFC 先了解常见的三种定位方案&#xff1a; bfc是普通流&#xff1a; 可以将bfc看作是一个属性 2.如何触发bfc 1&#xff0e;根元素() 2&#xff0e;浮动元素(元素的float不是none) 3.绝对定位元素(元素的position为absolute 或 fixed) 4.display为inline-block、tabl…