IDEA源码阅读技巧
阅读代码(源码)是我们经常需要做的事情。那么 IDEA 有什么技巧可以帮助我们更好、效率更高地去阅读代码(源码)呢?
[[toc]]
下面均以阅读 JpaRepository 源码为例。
1.1 查看当前接口/类源码
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐⭐ | Ctrl+左键 (Win) / Command+左键 (Mac) |
平时,我们如果想要查看某个类或接口的源代码时,我们可以将鼠标移动到该类/接口上,然后按住 Ctrl 后,鼠标左键点击,就会跳转到该类/接口的源码。
或者将光标移动到该类/接口上,然后按下 F4。
1.2 查看当前方法/类的实现
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐⭐ | Ctrl+Alt+左键 (Win) / Command+option+左键 (Mac) |
当我们调用一个方法/类,想要知道它是怎么实现的时候,我们可能会习惯性地通过 Ctrl+左键
,但发现看到的只是一个抽象方法/抽象类,或者接口。
实际上,遇到这种情况,我们应该使用 Ctrl + Alt + B/鼠标左键
(Win) / Command + option + B/鼠标左键
(Mac),直接跳转到该方法/类的实现。
如果对应的方法/类只有一种实现,则会直接跳转过去,如果有多个,IDEA 则会弹框让我们进行选择要跳转的实现。此时我们根据需求进行跳转即可。
1.3 查看当前类/接口的层次结构
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐⭐ | Ctrl + H |
在阅读源码的过程中,我们经常需要查看某个接口/类的层次结构(子类层次结构,或父类层次结构),以此查看该类/接口继承自谁,又被谁继承实现了,从而了解该类/接口的”前世今生“。
例如 JpaRepository 的子类层次结构为:
由此看出,
JpaRepository 被 JpaRepositoryImplementation 继承,
JpaRepositoryImplementation 又被 SimpleJpaRepository 实现,
SimpleJpaRepository 又被 QuerydslJpaRepository 继承
一层接着一层,非常清晰。同理,其父类层次结构为:
1.4 查看最近使用的文件/操作
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐⭐ | Ctrl + E (Win) / Command +E (Mac) |
如果我们想要查看最近使用过的文件/操作,我们可以通过该快捷键调取,IDEA 会弹出如下窗口:
1.5 快速检索类/文件/符号/操作/Git 命令
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐⭐ | 双击Shift |
该操作常用于:
- 想要搜索打开最近使用的文件
- 想要搜索某个包下文件(类、接口、配置等等,项目内的以及项目的依赖包内的),常用于搜索某个依赖包下的某个类。
- 快速搜索并执行某个 IDEA 或 Git 的操作/命令
1.6 查看当前类/接口的结构
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐ | Alt + 7 (Win) / Command +7 (Mac) |
一般情况下,如果我们直接查看某个类/接口的源代码,会发现代码非常多且杂乱,无法快速的定位到我们要想要看的部分,或者无法快速了解到该类/接口都有哪些方法、字段、内部类等等。
这个时候我们就可以借助 IDEA 技巧,在要查看的类/接口上按下 Alt+7
(win)/Command+7
(Mac),IDEA 就会弹出类似小窗口,将该类/接口的整体结构展示出来。
1.7 查看类/接口/方法被调用的情况
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐ | Alt + F7 |
如果我们想要知道某个类/接口/方法在哪里被调用了,我们可以通过在方法名上使用快捷键 Alt + F7
来查看。
1.8 查看当前类/接口的继承链路(图表形式)
使用频率 | 相关快捷键 |
---|---|
⭐⭐⭐⭐ | 相关快捷键较多,不建议记,直接右键选定即可 |
在类/接口名称上右键 ,选择 Shw Diagrams(显示图表) 即可查看图表形式的类继承链。
我们还可以对图表进行一些操作。比如,可以点击图表中具体的类/接口 右键,然后选择显示它的实现、父类,或者依赖项,也可以查看该类/接口被调用的情况,甚至可以直接跳转到其源码进行查看。
此外,最上边的工具栏还支持查看选中的类/接口的方法、变量、内部类等等,还支持将图表导出。
总之,功能非常多,想要全部记住是不现实的,需要用到哪个,再进行摸索就可以了。
1.9 源码阅读技巧之插件推荐
除了上面使用到的 IDEA 自带的技巧,我们还可以借助一些插件,大致了解项目的情况,例如项目的代码量、类或接口的数量、注释的占比等等,以及图形化方法调用链路。
1.9.1 一键生成方法调用时序图
序列图(Sequence Diagram),亦称为循序图,是一种 UML 行为图。表示系统执行某个方法/操作(如登录操作)时,对象之间的顺序调用关系。
这个顺序调用关系可以这样理解: 你需要执行系统中某个对象 a 提供的方法/操作 login(登录),但是这个对象又依赖了对象 b 提供的方法 getUser(获取用户)。因此,这里就有了 a -> b 调用关系之说。
我们可以通过 SequenceDiagram 这个插件一键生成方法的序列图。
安装之后,我们选中方法名(不能是类/接口名),然后右键,选择 Sequence Diagram 选项。
我们还可以对时序图的展示做一些配置,例如调用深度、是否显示构造方法等等
此外,我们还可以在时序图中,点击定位到相关的代码中,让我们快速了解该方法的内容,同时,还能将生成的时序图导出为图片。
1.9.2 项目代码数据统计
该插件能够帮助我们快速分析项目情况,我们可以对项目的 代码的总行数、单个文件的代码行数、注释行数等信息进行统计。
我们可以非常直观地看到项目中所有类型的文件的信息,比如数量、大小等等,可以帮助我们更好地了解项目。
还可以使用它看所有类的总行数、有效代码行数、注释行数、以及有效代码比重等等这些东西。
当然,如果项目太大,该插件会运行一段时间,好在插件本身可以设置为启动时不激活,当我们需要查看项目情况的时候,再点击底部 Tab 栏进行激活。