超实用的阅码工具,推荐收藏!

近期在阅读一个陌生Java项目的过程中,学习了“断点回溯法”,也亲测了几个代码阅读工具。这里简单分享一下工具的使用体验。

Idea Debugger

大部分同学应该都是使用 Debugger 方法来读代码的,其最大的好处就是可以逐行展示出运行时堆栈和数据。

但 Debug 模式只能维持当前一个堆栈上下文,还不能回退,这就带来了两个问题:

  • 需要很多次操作,才能搞清楚流程的来龙去脉
  • 需要人脑存储不同的堆栈上下文,遇到复杂项目,直接内存溢出而罢工

因此,这种朴素的方式是比较费劲的。

Debugger-to-Uml

有少部分 jy 提到了这个工具,我就去体验了一下。这是对“Debugger”的一个增强。简单来讲,就是可以把一个堆栈转换成序列图。

体验下来,感觉有点点用,但是不大。毕竟,堆栈就是一个线性的序列,没有分叉。

唯一有点超出预期的地方就是,这个工具可以筛选包名,可以针对性看某个局部。这在一个堆栈非常长的时候,有点用。

在看堆栈的时候,有一个真正的问题,大家却都没有解决,那就是抽象类的问题。比如上面这个堆栈,可以看到很多 Filter 都显示是”OncePerRequestFilter“,这明显不符合预期的,按照Chain的设计模式,一般不会有重复的 Filter。而堆栈之所以这样显示,是因为 OncePerRequestFilter 是一个基础父类,很多Filter都是继承了它去实现的。但这些继承的子类,在堆栈中,却没有展现出来。这个问题,在第一次看代码时,很容易懵逼!

SequenceDiagram

这是比较老的一个静态代码序列图工具。 安装插件后,随便找到一个函数,右键“SequenceDiagram” 就可以生成一个序列图。

 这个插件最大的优点是简便易用,但缺点也很明显:

  • 生成的是静态序列图,没有运行时数据可以参考,不能协助去除分支和抽象,
  • 对于设计模式,没办法有效地展现(比如上图本应该是一个Chain模式,但序列图无法知道下一个Filter是什么)

而现代程序越来越复杂,分支抽象,设计模式充斥其中。 个人体会下来,SequenceDiagram 更多地是一种画图工具,主要用来总结代码,对于阅读陌生代码作用比较有限。

XCodeMap

XCodeMap,动态生成上下文序列图,5分钟就能读懂源码,解决问题。

其官网描写的优势有:

  • 免分支抽象
  • 免设计模式
  • 免反复Debug

其能做到这一点,主要是因为其采集了程序的运行时数据,并保存下来,像分析型数据库一样进行分析。

XCodeMap 一个出乎意料的工具,有很多创新的功能,我的好多文章,都是在它的帮助下完成的。

详情可以查看官网 xcodemap.tech/ 。

体验下来,Idea Debugger 仍然是必不可少的工具,而 XCodeMap 则是一个非常有潜力的工具,在快速进步中,有望改变整个竞争现状,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值