真心请教关于阅读源码的问题

2019-04-29 15:46:10 +08:00
 codechaser

各位好!如果想要阅读一个开源项目的源码,而这个源码作者水平又很高,怎么着手开始看呢?例如像这个:g2o.我现在主要是根本找不到该从哪个地方开始看,或者说程序入口在哪儿...翻了一会儿越来越觉得难,退堂鼓就开始敲了... 实在是没有这个经验,无头苍蝇...

1485 次点击
所在节点    问与答
9 条回复
ghos
2019-04-29 16:28:55 +08:00
开 debug 一路一路跟下去
whoami9894
2019-04-29 16:29:31 +08:00
从 v0.1 的源码看起
cjc2017
2019-04-29 16:45:37 +08:00
相同的困惑
tt67wq
2019-04-29 17:37:21 +08:00
直接看源码跟考古差不多,没有章法的话根本看不了。
最好是尝试自己写点简单 demo,写的时候会遇到问题,然后去源码里面找找他是咋写的。
changwei
2019-04-29 17:46:08 +08:00
如果是找不到入口的话,先看 travis,cmakelist (如果没有用 cmake 那就看 makefile )。对于有依赖管理的项目,先看他的依赖声明文件(比如前端就是看 package.json,php 看 composer.json ),了解这个项目外部有哪些依赖。

看 make 文件是为了了解这个项目内部的编译顺序,了解项目内部模块互相依赖的情况。梳理清楚项目内部的依赖之后就至顶向下看。

我看的都是中小项目,web 业务代码比较多,这个思路足够了,大项目开源轮子估计还有别的技巧。比如结合 readme.md 和一些 docblock 格式化的注释。
dfjslkjdf
2019-04-29 18:32:03 +08:00
下载下来编译,先读 readme。
有文档读文档,
Documentation
A detailed description of how the library is structured and how to use and extend it can be found in /doc/g2o.pdf The API documentation can be generated as described in doc/doxygen/readme.txt

最主要理清楚模块框架,整体设计,然后逐步深入吧。
单元测试也有助于理解。
dfjslkjdf
2019-04-29 18:32:30 +08:00
个人拙见,有更好的东西请大佬指教。
blless
2019-04-29 18:48:34 +08:00
go 语言我觉得有个好处就是我看不懂就去看 test 里面代码怎么测试的
q8164305
2019-04-29 18:51:08 +08:00
借助大佬的源码阅读文章和 debug 慢慢看,别自己扎进去,网上很多源码分析,一边看一边 debug

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/559775

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX