分享

读源码太难?试试这款工具 鲁班大叔

 lyfd2003 2024-05-14 发布于上海

程序员最痛苦的事,不是需求又改了,而是别人代码摆在你面前,你却看不懂它。

有诗为证:

人在屎山行,加班到天明。

一把辛酸泪,谁解其中味

1源码为什难?
程序员读源码的痛苦,产品经理很理解。“不就是改点功能么,有那么难吗?”说实话,我们情愿加新功能,也不愿意去改别人的旧代码。情愿去翻越一座雪山,也不愿去翻屎山。原因不解释,不是程序员,不会懂的。下图是一个源码执行过程,外行可以直观感受一下,如果让你在这堆杂乱图中,把它逻辑一条条捋清楚,是不是想死的心都有了。

1大神破局


源码是怎么变复杂的?追究原因已经没有意义了,当务之急,是提高我们源码阅读的能力?国内就有一位技术大神,他开发了一款源码阅读工具,以可视化地图的方式追踪源码执行过程,效果怎么样?我们一起看一下。
1源码在线阅读


这款工具叫源码阅读网,它支持类似IDEA一样源码在线阅读网体验。总体设计布局都是照搬的IDEA,其功能如下:

  • 完整的项目类浏览,包括依赖的JDK及第三方包

  • 快速类导航,通过Ctrl+鼠标点击跳转。

  • 元素聚焦,点击方法或属性会聚焦到相关引用。

  • 跟IDEA一样的类搜索

1元素定位,类跳转
按住Control 或Cmd 就可以定位跳转

1类搜索
支持单个字母分词,如下图中搜索关键字是strbuff 可分词成 strbuff 从而搜索StringBuffer

源码在线阅读确实是方便了。但源码复杂度还是在那里,还是看不懂呀。客观别急,在线阅读只是开胃菜,接下来的源码地图才是硬菜。
1源码地图
阅读源码的痛点在于,梳理源码繁杂的流程。尽管我们不停的Debug,最后还只是梳理出一小部分流程,无法得其全貌。这就是为什么,我们对源码的掌握总是一知半解的原因。为此大神开发出了源码地图,它把源码完整执行节点展现在地图上,你可以看某个用例执行全貌,也可以看任意两个方法间的执行链路细节。

上图是 Spring Ioc 容器启动全貌图,点击图中任意节点,按F2查看说明,F3就可以查看它对应源码。

1链路追踪
现在让我们去一个陌生地方,并不是难事,只要百度导航一搜,到达路线,途经节点清清楚楚。但如果你问一个新手,这个方法有多少条到达它的路径,这会把它活活问懵。尽管老手可以通过IDEA搜索执行树,可结果也不尽人意。因为源码中大量的反射和代理,不能通过静态代码分析来追踪。在源码地图中可以找到任意方法,搜索出它所有的执行路径,以及途径节点。

尽管源码地图功能强大,但对于新手来讲,源码仍然是一座难以翻越的大山,这需要编程经验的积累,非一朝一夕之功。这里推荐新手使用流程图,使用门槛较低。
1流程图
这种图相比源码地图,会更简单直观,适合新手学习。

点击红色节点可查看 对应的变量数据结构。

里面还有很多功能,就不一一介绍了,读者可自行体验。
1支持语言
目前该工具只支持JAVA语言,其它语言栈的朋友可能要失望了。但没办法,网站是作者个人开发,精力有限,能把JAVA做好就值得鼓励了。


内测体验

网站刚刚上线,功能还不太稳定,目前仅对内测群开放。如果你也是源码爱好者,可以加入他们的内测群,和作者一起完善它。

1最后寄语
国内独立创作不易,希望作者能一路坚持下去。 本文欢迎转载,转发,不需要作者同意。

发布于 2021-03-09 11:35

开源免费的源码阅读神器 Sourcetrail

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多