如何选择阅读开源代码

网上的开源代码形形色色,种类太多,如何选择?
另外对于这些代码应该怎么阅读,从何处下手?

阅读 4k
2 个回答

虽然读得不多,不过可以分享下经验。

我也曾经找过些源码来读,不过一般是因为想了解某些东西背后是怎么实现的。比如说tail命令、libc里的qsort和一些其他的细节(比如stdin是哪儿来的)。

这些东西首先让人头疼的是,代码从哪儿找。像tail这种原先属于textutils,后来被并入coreutils里的小东西,找起来就有点费劲。qsort也有点费劲,虽然是属于libc,但是libc的实现有好多个,比如Ubuntu下一般用的是eglibc。不过它们的好处是,你起码知道其运行的基本流程,看代码的时候心里有底。这些小东西虽然功能不复杂,但是实际上代码也不短(比如tail,至少2000+行,还不包括一些额外的辅助函数),总之还是要花点时间,还是能啃下来的。

至于量比较大的那种源码,我看得不多。完整看完的量比较多的,就一个叫Mini-OS的操作系统源码(Xen自带的小OS,其实代码也就1w+行的样子),是在把握了整体的情况下(当时项目组在做Xen相关的东西),一行一行一个文件一个文件地去看,边看边加注释(往往你觉得看懂了的东西,写下来还会有一番收获,如果能向别人讲出来,那收获就更大),看了好些天,也还是啃下来了。

最近有一个想看的源码是Lua的源码。但是由于不搞游戏开发,对Lua的了解很少,所以上手有点困难。

除此之外,我看的代码,基本都是整体的一个小部分,比如说apache的mod_proxy模块(想改改)、php模块(想了解某些实现细节)之类。这些东西会了一个,其他的都触类旁通了(由于写过php的模块,所以看php的模块代码时就比较轻松)。

最后建议是,在看代码之前,对你想看的代码一定要有个大致的了解,它是做什么的,框架大概如何,试着去用用它,从某个细节上先打入内部。所谓万事开头难,其实一旦开始看进去,也不是有多难(虽然曾经想看kernel中write的实现,但是还是有点吃力=。=)。

1、了解原理 2、语言、算法水平足够 3、坚持下去,不断总结

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
101 新手上路
子站问答
访问
宣传栏