Java 源码阅读 最佳实践

连线北海
连线北海
连线北海
201
文章
6
评论
2017年12月20日23:20:53 评论 460 967字阅读3分13秒
  1. 原则

原则1:了解使用

仔细查看使用文档和说明,写较为详细的 demo 程序。

原则2:了解全局

了解该产品解决了哪些问题,并了解其周边产品及优缺点。

原则3:了解原理

查看其内部架构文档,如果有了周边产品的了解,可以从周边产品推算出其实现基本原理。不过当对其它产品了解比较深刻的时候,这个原则很容易就可以达到了。

  1. 方式

单步 Debug

单步 Debug 是比直接阅读源码来得更加直观快速的方式,通过单步 Debug 的主要目的是了解整个源码的大概逻辑和流程。

  • 针对应用程序(Tomcat、Hadoop):找启动脚本 -> 找到 main 入口 -> 开始 Debug
  • 库、框架(FastJSON、Spring):找到关键类 -> 打断点 -> 查看堆栈

「无法 Debug?」

很多时候我们拿到的都是「无法运行」的代码,比如说构建起来很麻烦的源码、只有一个 lib 包。在这个时候只能采取一些其它手段了。

  • 在我看来,最有效的方式还是 Debug。如果遇到了比较难构建的源码,那么暂时放弃构建它的想法,可以直接新建一个工程并添加其 Jar 包依赖,写测试代码的方式进行 Debug。至于测试代码,可以从源码的官方文档、或者它的测试用例中找到;
  • 如果以上也是比较麻烦的话,那就直接强行裸看代码吧,不过裸看代码也有一些简便的方法让你更好的裸看代码,比如接下来的。

梳理整个工程的类依赖关系图

以 Intellij IDEA 的为例:

  • 右键 Java 类
  • 点击 Diagrams
  • 点击 Show Diagrams

查找方法调用关系

以 Intellij IDEA 的 Mac OS X 的快捷键为例:

  • Alt + F7 (Find Usage)
  • Ctrl + Alt + H (Call Hierarchy)

搜索关键字

这个一般在无头绪的时候才会使用的。比如出现了框架内部的错误,里面包含了特殊关键字,如错误日志或者没有堆栈的方法。

这个在 Intellij IDEA 中比较好用,可以包含依赖的三方库进行全文搜索。快捷键:

  • Ctrl + Shift + F (Find in path)

搜索三方库需要选择 Custom -> Project and Libraries

如果是 Eclipse 的话,似乎只能是大概知道是哪个 Jar 包之后,解压 source 包再全文搜索吧 = =

  1. 其他

我好像就上面几个方法,看任何源码(Hadoop、Spring、Netty、公司内部的)都能够很快上手。如果想到啥或者有啥比较典型的实例的话,再补充吧。

继续阅读
weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
连线北海
  • 本文由 发表于 2017年12月20日23:20:53
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Windows10搭建汇编环境 信息技术

Windows10搭建汇编环境

想学习汇编或者做一些汇编测试的人,可以参考以下文章的环境按键步骤,当然你也可以借助其他工具完成这些工作,任君选择。 实验的环境: 操作系统:Windows 10 x64 DosBox:74-3-win...
关于EL表达式与thymeleaf 信息技术

关于EL表达式与thymeleaf

前言 很久之前,也许你在JSP代码中会遇到类似${person.name}、${person}这样的代码,这样的代码被称之为EL表达式,看起来像不像现在普遍使用的模板引擎thymeleaf里的用法? ...
Windows 10无法删除恢复分区 信息技术

Windows 10无法删除恢复分区

1  前言 Windows 10安装的时候,默认会创建一些类似【恢复】、【系统保留】分区,强迫症促使我想去删除它们,一般情况,通过【计算机管理】中的【磁盘管理】可以操作,但是你会发现根本没有删除选项,...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: