secondwtq
2019-12-08 13:11:48 +08:00
我的经验是,工具并不能很直接的帮到你,要真正理解源码,你需要自己去测试、调试它,这样你脑子真正用起来,学到的会更多
比如一个接口有很多实现,在跑主流程的时候用的是哪个实现,有时候在对项目本身不熟悉的情况下,不调试很难确定
然后你可以加各种断点,注释,assert,printf 什么乱七八糟的
当然 Java 项目一般都很花哨,这时候确实可能需要个 Class Hierarchy 之类的(所以我到现在不习惯读 Java 项目,个别 Scala 项目倒是能读)
当然我读得不多,一般都是用到的时候有 bug,或者好奇某一部分的原理才粗略看看,“怎么系统地学习一个项目”这项技能我还在慢慢探索
工具的话,收费的有 SciTools Understand (超级贵,跨平台),Source Insight (价格还可以接受,非 Windows 平台需要用 Wine )
以上都没用过
还有个前段时间刚开源的 Sourcetrail (之前是商业软件,也比较新),来自莫扎特的家乡,我稍微用了下感觉做的比较简单,还没实际应用过
其实我打算自己写一个的,不过这方面没有好用的工具,其实估计也说明了有能力做这种工具的人相比于读代码,更倾向于 hack 代码 ... 所以我如果真做的话估计会偏向于这方面
一般人比较现实的
Java 是 IDEA 和 Eclipse
C/C++ 的话就是 VS,CLion,Eclipse CDT,Emacs ECB,vim + ctags/cscope/gtags/cflow/global
动态追踪工具,VTune,Callgrind,gprof