如何看懂 github 上的开源项目

2014-04-25 17:03:27 +08:00
 gujianbo
RT,github上有很多优秀的开源项目,如nginx、mysql、hadoop、spark、tair。对此比较敬仰,但是就是不知道怎么看懂,求解
28216 次点击
所在节点    程序员
37 条回复
PotatoBrother
2014-04-25 19:05:51 +08:00
学习你想要看懂的项目的语言
Akagi201
2014-04-25 19:56:22 +08:00
上面都太牛了, 我告诉lz吧, 我应届毕业然后在公司做嵌入式开发,主要是网络编程多线程这些, 4000多个文件吧(包括开源代码), 花了7个月才搞懂, 自己增减模块. lz自己掂量着看吧, 呵呵, 不过我现在很"牛X", 自己创业单干无压力, 呵呵, 我觉得起步慢点好, 当然我是比较稳的类型
Akagi201
2014-04-25 20:00:02 +08:00
@Mutoo
Akagi201
2014-04-25 20:00:35 +08:00
@Mutoo 有类似的优秀教学网站求推荐
liuxurong
2014-04-25 21:55:01 +08:00
@Mutoo thanks!


@simpx 你智商很高的感觉。我们模仿不来
Taivas
2014-04-25 22:14:23 +08:00
学习了。
TangMonk
2014-04-25 22:33:51 +08:00
@simpx 对,只要有动力,什么代码都可以读。
csx163
2014-04-25 22:40:14 +08:00
@Mutoo URL的那个✓很萌啊
hitsmaxft
2014-04-26 00:19:03 +08:00
1, 你功底不足
2, 你想太多

如果你想看懂优秀的作品, 首先你需要一定程度的"优秀"

所以你现在需要的就是好好学习, 多写代码多思考, 另外从不那么复杂的作品看起, 最好在2k以内, 把自己功底提升上去.
greatghoul
2014-04-26 09:14:54 +08:00
如果目前的项目你看不懂,就找一个能看懂的看。
kehr
2014-04-26 17:30:16 +08:00
@alexapollo 说的很赞。但也有问题。

第一,开源项目很少有专门介绍架构设计的文档。(资历浅,这真没见过...)需要你自己在看源码的过程中逐步递进的理解,自己总结。

第二,「最后才是看模块中的代码」我觉得不能放在最后。alexapollo 的步骤说的很对,但是每一步并不是独立的。边看模块中的代码边理解模块的功能和与其它模块之间的交互,能够让自己对项目的结构更清晰。当然也不要一下通读全部,函数知道它的输入输出,模块知道它的功能,先建立起一个对项目的宏观认识。

说白了就是要照 alexapollo 说的几条来回倒腾,反复几遍,一定会有感觉的。

改一改源码,跑起来看看效果,都是不错的方法。

方法很多,贵在坚持。(我也就看过一个项目源码,当初很痛苦,现在很幸福。)
alexapollo
2014-04-26 20:49:30 +08:00
@kehr
这个回复是copy自我的openstack知乎回答的……所以你可以对号入座
其实说起来就是自顶向下逐层展开,自底向上逐层归纳。
当然,如果能加入项目,直接contribute某一个模块,肯定是会更快的了解整个项目。
dopcn
2014-04-28 16:17:54 +08:00
扯远一点,提高情商就行
情商帮你在看到一大堆毫无头绪的代码时冷静下来,首先理智分析自己这样看是否必要,如有必要那就大问题化小,小问题化无问题。一切归咎于是否有能力在遇到困难时控制自己的情绪
wyj2046
2014-04-28 18:46:50 +08:00
@simpx 赞这句
没有看不懂的代码,只有不够强的动力
深有体会
wyj2046
2014-04-28 18:49:06 +08:00
@simpx 最近的经历和你太像了
不过好处是虽然没有文档 但是还有活字典:)
anubiskong
2014-04-29 18:03:58 +08:00
先会用, 找到喜欢的项目, 从自己最了解的功能下手找到相关代码一头钻进去, 然后慢慢扩展到其他功能
zempty
2016-11-25 09:05:13 +08:00
首先把你的智商提上去,再把相关语言的基础打扎实。这个问题就不攻而破

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

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

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

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

© 2021 V2EX