IDEA高效实践(中)

简介: 四、导航想去哪儿就去哪儿,定位问题与查阅代码都很方便。


四、导航



想去哪儿就去哪儿,定位问题与查阅代码都很方便。、


1. 文件

  • 类全局查找:Ctrl+N
  • 文件全局查找:Ctrl+Shift+N
  • 符号全局查找:Ctrl+Alt+Shift+N
  • 行/列定位:Ctrl+G
  • 退回上/下一个位置:Ctrl+Alt + Left/Right
  • 跳转到上/下一个标签页:Alt + Left/Right
  • 跳转到文件上/下一个修改的位置:Ctrl+Alt+Shift + Top/Bottom
  • 切换文件标签页:Ctrl+TabCtrl+Shift+Tab


2. 代码

  • 跳转到属性、方法、类定义的位置:Ctrl+B
  • 跳转到接口、方法实现的位置:Ctrl+Alt+B
  • 跳转到类型定义的位置:Ctrl+Shift+B
  • 跳转到父类,父方法的位置:Ctrl+U
  • 跳转类测试类、方法的位置:Ctrl+Shift+T
  • 跳转到下一个错误位置:F2
  • 跳转到上一个错误位置:Shift+F2
  • 跳转到上/下一个方法位置:Alt + Top/Bottom
  • 跳转到大括号开头/结尾:Ctrl + [/]

在代码编辑器的左侧会存在Gutter图标,在设置 File | Settings | Editor | General | Gutter Icons 中我们可以看到这些图标的含义,单击图标也可以跳转到对应的位置。

比如:Spring注入的Bean定义的位置。


3. 结构

  • 查看文件结构:Ctrl+F12
  • 查看文件路径:Ctrl+Alt+F12
  • 查看类型层次结构:Ctrl+H
  • 查看方法层次结构:Ctrl+Shift+H
  • 查看调用层次结构:Ctrl+Alt+H


技巧

  • 在查找类、文件的时候可以通过特殊符号定位到类中的某个方法或某行。


这个方法在定位问题的时候大有用处,而且只需简单的规则,就可以形成代码的坐标。

  • 使用#标记类或文件中的某个方法或属性:HttpProxy#get
  • 使用:标记类或文件中的某行某列:HttpProxy:37:10

在团队之间发送代码位置的时候,使用右击菜单中 Copy ReferenceCtrl+Alt+Shift+C)来复制某个类、方法、属性等的唯一坐标,然后开发人员可以使用Ctrl+N输入坐标来定位代码。

微信图片1.gif

  • 查看类型层次结构的时候可以使用 Ctrl+Alt+U 来显示类的UML图,也可以在Project项目文件树中选中类生成。

微信图片2.gif


五、代码



高效编辑代码,节省苦力活,缩短开发时间,今晚不加班。


1. 插入

  • 重写父类方法:Ctrl+O
  • 实现父类接口:Ctrl+I
  • 生成代理方法:Code | Delegate Methods
  • 生成多种代码:Alt+Insert
  • Constructor:构造方法
  • Getter:Get方法
  • Setter:Set方法
  • Getter and Setter:Get方法和Set方法
  • equals() and hashCode():equals方法和hashCode方法
  • toString():toString方法
  • Test:测试类或测试方法
  • Copyright:版权信息
  • @Autowired Dependency:注入Spring Bean
  • 插入包围代码:Ctrl+Alt+T


  • if / else / while / for
  • try / catch / finally
  • synchronized / Runnable
  • region...endregion Comments
  • 去除包围代码:Ctrl+Shift+Delete
  • 补全当前词语:Alt+/Alt+Shift+/
  • 当前行前面插入一行:Ctrl+Alt+Enter
  • 当前行后面插入一行:Shift+Enter
  • 删除当前行或选中行:Ctrl+Y
  • 重复插入当前行或选中行:Ctrl+D

在编写代码的时候,经常会要记录一些非代码文件,可以使用 Ctrl+Alt+Shift+Insert 来新建草稿文件,支持多种格式,新建好的草稿文件会保存在 Project 文件树的/Scratches and Consoles/Scratches目录下。


2. 选择

  • 选择当前光标所在区域:Ctrl+W,重复使用扩大选择范围
  • 缩小当前选择范围:Ctrl+Shift+W
  • 选择当前光标所在表达式:Ctrl+Shift+P


3. 格式

  • 插入行注释:Ctrl+/
  • 插入块注释:Ctrl+Shift+/
  • 格式化代码:Ctrl+Alt+L
  • 自动缩进对齐:Ctrl+Alt+I
  • 生动优化导包:Ctrl+Alt+O
  • 列自动对齐:Code | Align to Columns
  • 代码折叠
  • 折叠/展开当前代码段:Ctrl + -/+
  • 折叠/展开全部代码:Ctrl+Shift + -/+
  • 折叠全部文档注释:Code | Folding | Collapse doc comments
  • 展开全部文档注释:Code | Folding | Expand doc comments


4. 移动

  • 代码语句上/下移动:Ctrl+Shift + Up/Bottom,可以简单移动方法的位置
  • 代码行上/下移动:Alt+Shift + Up/Bottom


5. 片段

快捷键与编辑器配置中说到了如何配置代码片段,代码片段可以明显地提高编辑代码的速度,由其插入高频代码。

智能片段:可以直接输入,也可以使用Ctrl+J来选择

微信图片3.gif

包围片段:可以选中一段代码使用Ctrl+Alt+J插入,也可以使用Ctrl+Alt+T

微信图片4.gif


6. 纠错

  • 在代码中存在红色波浪线的代码都是有问题的代码
  • 右侧滚动条上方图标不为绿色的对钩时表示该文件中存在有问题的代码
  • 可以点击滚动条的彩色条来定位有问题的代码
  • 也可以使用F2Shift+F2来快速定位有问题的代码
  • 滚动条的彩色条颜色决定着问题的严重性,例:警告错误
  • 光标置于错误代码的时候,左侧会出现电灯泡,单击它有解决办法
  • 使用快捷键 Alt+Enter 和单击电灯泡的功能一样

不管代码有什么问题,使用 Alt+Enter 总能找到解决办法。

不要轻易关闭代码的错误提示,级别较低的警告可以酌情处理


技巧

  • 在接口名称AE选择 Implement interface 快速添加接口的实现类。
  • 在抽象类名称AE选择 Implement abstract class 快速添加抽象类的实现类。
  • 在类名称AE选择 Create subclass 快速添加该类的子类。
  • 在接口、抽象类、类名称AE选择 Create Test 快速添加类的测试类。
  • 在方法名称AE选择 Generate missed test methods 创建测试方法。
  • 在方法名称AE选择 Generate overloaded method with default parameter values 创建当前方法的重载方法。
  • 在属性、方法、类名称AE选择 Add Javadoc 快速添加文档注释。
  • 在正则表达式字符串AE选择 Check RegExp 校验正则表达式。

AE表示使用Alt+Enter快捷键

  • 在鼠标光标拖动选择的时候按住Alt键可以垂直选择进行多行编辑。
  • 按住 Alt+Shift 键使用鼠标光标单击多个地方可以进行多个位置编辑。
  • 在使用Ctrl+F的时候,想要编辑所有的结果可以使用Ctrl+Alt+Shift+J
  • 在当前输入的字符串位置 AE 选择 Inject language or reference 可以标注当前字符串是哪种语言,比如选择JSON,当前字符串应付支持JSON格式的高亮和代码提示,其他语言也一样,比如SQL,这让输入字符串变得的更加简单。

微信图片5.gif

如果标注的是JSON,还可以 AE 选择 Edit JSON Fragment 来格式化编辑JSON,自动生成转义字符。


六、分析



分析项目,分析代码,才能分析设计。


1. 代码

  • 检查代码:Analyze | Inspect Code
  • 检查代码并修复:Analyze | Code Cleanup


2. 依赖

  • 分析依赖信息:Analyze | Analyze Dependencies
  • 分析被依赖信息:Analyze | Analyze Backward Dependencies
  • 分析Module依赖信息:Analyze | Analyze Module Dependencies
  • 分析依赖矩阵:Analyze | Analyze Dependency Matrix


3. 数据

  • 分析传递到当前的数据流:Analyze | Analyze Data Flow to Here
  • 分析从当前开始传递的数据流:Analyze | Analyze Data Flow from Here
  • 分析异常堆栈信息:Analyze | Analyze Stack Trace


技巧

  • 分析数据流可以追踪方法调用关系。

微信图片6.gif

可以使用分析异常堆栈信息来处理异常日志。

微信图片7.gif


七、重构



珍惜每一次重构的机会,尽量把项目设计的更好。


1. 重构

  • 重构当前代码:Ctrl+Alt+Shift+T
  • 重命名:Shift+F6
  • 修改类或方法签名:Ctrl+F6
  • 修改定义类型:Ctrl+Shift+F6
  • 修改成静态定义:Refactor | Make Static
  • 修改成实例方法:Refactor | Convert To Instance Method
  • 移动/复制:F6/F5(可以移动静态变量或方法)
  • 安全删除:Alt+Delete
  • 提取方法生成代理类:Refactor | Extract | Delegate
  • 提取方法生成接口:Refactor | Extract | Interface
  • 提取方法生成父类:Refactor | Extract | Superclass


2. 优化

  • 对当前表达式提取并封装:Refactor | Extract
  • 提取为变量:Ctrl+Alt+V
  • 提取为常量:Ctrl+Alt+C
  • 提取为类属性:Ctrl+Alt+F
  • 提取为方法参数:Ctrl+Alt+P
  • 提取为函数式参数:Ctrl+Alt+Shift+P
  • 提取为函数式变量:Refactor | Extract | Functional Variable
  • 提取方法的多个参数封装为对象:Refactor | Extract | Parameter Object
  • 提取为方法:Ctrl+Alt+M
  • 提取为方法并封装成对象:Refactor | Extract | Method Object
  • 对当前表达式去除封装:Refactor | Inline
  • 查找并封装重复代码:Refactor | Find and Replace Code Duplicates
  • 倒置布尔类型:Refactor | Invert Boolean
  • 去除中介调用:Refactor | Remove Middleman
  • 包装方法返回结果:Refactor | Wrap Method Return Value
  • 使用方法概括属性:Refactor | Encapsulate Fields
  • 变量的初始化提取为方法:Refactor | Replace Temp with Query
  • 使用工厂方法替换构造方法:Refactor | Replace Constructor with Factory Method
  • 使用构建器替换构造方法:Refactor | Replace Constructor with Builder
  • 使用安全的类型填充泛型:Refactor | Generify


3. 继承

  • 将类成员推送到父类:Refactor | Pull Members Up
  • 将类成员拉取到子类:Refactor | Push Members Dowm
  • 使用接口替换类定义:Refactor | Use Interface Where Possible
  • 使用代理来替换继承:Refactor | Replace Inheritance with Delegation
  • 匿名类替换成内部类:Refactor | Convert Anonymous to Inner


技巧

  • 在Controller方法中,使用 Refactor | Extract | Parameter Object 把多个接收表单的参数封装成VO类。

微信图片_8.gif



目录
相关文章
|
Cloud Native 网络协议 Java
云原生之容器编排实践-通过IDEA连接Docker服务
云原生之容器编排实践-通过IDEA连接Docker服务
249 0
|
网络协议 Java Unix
实践一下,用IDEA自动化部署Docker镜像,并没有你想象中的那么难
1、Docker开启远程访问 [root@izwz9eftauv7x69f5jvi96z docker]# vim /lib/systemd/system/docker.service #修改ExecStart这行 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
|
XML IDE Java
一周实践终于完成IDEA安装spring,最强心得
一周实践终于完成IDEA安装spring,最强心得
257 0
一周实践终于完成IDEA安装spring,最强心得
|
IDE 前端开发 Java
IDEA高效实践(上)
IDEA(IntelliJ IDEA)是业界公认的最好开发工具之一,当然好不好也因人而异,也不要刻意去争谁强谁弱,高手往往不在乎手中的兵器是什么的。个人而言,更高效的工具适合每个开发人员,在编写代码的时候花的时间少,就有更多的时间去设计代码,当然,使用一个陌生的IDE,效率肯定是比不上自己熟练的IDE的,所以为了节省诸君的学习成本,也为了更快地去接纳和熟练IDEA,所以周末之余,故作此文。---- 一品江南
318 0
IDEA高效实践(上)
|
XML JSON Java
IDEA高效实践(下)
八、构建 蛋变成鸡的一步,怎样处理好一个蛋,一窝蛋?
236 0
IDEA高效实践(下)
|
Java 程序员 API
Demo Show | 蚂蚁金服 mPaaS IDEA 插件实践
本文将结合上周在 JetBrains 开发者大会分享的《mPaaS IDEA 插件实践》,深入展开 mPaaS 在 IDEA 插件开发之路上踩过的坑和沉淀的思考,希望能够带来一些参考性。
1908 0
|
18天前
|
Java 编译器 Maven
使用intellij idea搭建SSM架构的maven项目 详细
使用intellij idea搭建SSM架构的maven项目 详细
35 4