首页 > 教育学习 > 为什么 > 你认为哪个项目的源代码最值得阅读?

你认为哪个项目的源代码最值得阅读?
2012-01-19 18:17:18   来源:   点击:

    你认为哪个项目的源代码最值得阅读?

    14 个答案

    • 答案 1:

      (前面有人提到了 Redis、Lua 和 nginx,这些我也推荐)读代码可能有两种原因,一是对这个东西某处不满意想改,二是想学习其中的设计实现思路,前者动力更直接一些,如 @陆亦斌 所说,后者则不好选,因为纯粹泛泛地看跟你实际环境关系不大的代码,其实不太容易学到东西。而且现代软件设计其实也充满了许多妥协和折衷,大家最常用的软件,往往不是代码最干净的,而是做了许多妥协折衷的。比如最明显的有 Linux Kernel,有很多风格不一致的代码 (但这并不减弱它的学习价值);mplayer 的代码是我见过的最丑陋但又非常实用的,在这样的代码基础上为啥能够活跃发展到今天,也很值得研究;vim 代码打满了各种 #ifdef,你看了也会很惊讶为啥一个人能维护如此错综复杂的代码这么多年。我们有句老话,叫做水至清则无鱼,软件设计其实很多时候是在受限的条件下解决问题的本事。Beautiful Code [1] 介绍了很多精彩的代码,Beautiful Architecture [2] 介绍了很多值得学习的架构。下面还可以补充一些:

        git

        FreeType

        fontconfig

        cairo

        NetBSD 的用户空间代码

        DTrace

        WebKit

        Mac OS X 的 launchd

      从扩展思路的角度来说,一个程序员应该好好读过这样一些代码:

        一个操作系统内核

        一个编译器

        一个解释器

        一个数据库

        一个 Web 服务器

        一个 Web 浏览器

        一个编辑器

      因为这些都是几十年来被频繁地反复实现的代码,无数天才的程序员在这些领域发挥智慧,所以在它们各自领域“state of the art”的代码,可想而知质量是很高的。[1]oreilly.com/catalog...[2]oreilly.com/catalog...
    • 答案 2:

      如果对erlang感兴趣,想从代码角度熟悉下dynamo,riak的代码值得一读
    • 答案 3:

      个人感觉redis和lua的代码都不错.据说nginx也很好.
    • 答案 4:

      不限语言的话,Minix 值得一读。无论如何,坦尼鲍姆(Andrew S. Tanenbaum)那几本讲操作系统的书籍应该读一下。对源码有大量的注解。
    • 答案 5:

      只看过c的开源代码,这里最推荐nginx和lua,他们不管是组织,风格还是性能,都可以说是登峰造极了。而且代码都不是怎么长,特别lua,只有几万行代码。话说最好的代码,一般来说开发者都是很少的,或者说只有一个人的。
    • 答案 6:

      postfix 的代码很干净漂亮; Mozilla 的代码因为群体太大所以很混乱了但是结构还清楚; Linux 的代码质量远不如 FreeBSD; apache 其实也很乱; reactOS 的代码值得一读; 应该还有不少, 只是想不起来了, 想起来的时候再来加吧...
    • 答案 7:

      你的工作和技术兴趣是什么?以此为方向去读相关领域中最优秀的开源产品的代码吧。比如搜索领域的经典项目Lucene的代码很值得一读。如果要用到一个新的开源产品,我都会扫一边它的核心代码。
    • 答案 8:

      MySQL源码和Apache的源码都是值得阅读的
    • 答案 9:

      如果你是java工程师,spring的源码一定要读!个人感觉可以让你上一个档次!
    • 答案 10:

      有些开源软件的代码很乱,比如net-snmp,当年看疯了。现在看MySQL的,组织的也不好。反而个人主导项目的代码nice一点,比如redis,nginx。
    • 答案 11:

      Lua的代码很好。但是问题也是太好,太干净。就Lua要解决的问题来说,这是很好的:有良好边界的纯符号问题或者纯策略配置(说白了,前者就是数学,后者就是胶水)。不过我推荐看脏一点的代码,也别太脏。Linux kernel就行。
    • 答案 12:

      Lua, Python, Nginx..代码有序结构良好,值得一看恩
    • 答案 13:

      java方面的如下:struts,spring,acegi,tomcat,java自身的源代码学习以上代码,对WEB开发应该很有帮助!android平台提供的源代码.javascript:我只部分学习过jquery,protype
    • 答案 14:

      别忘了unix

相关热词搜索:

上一篇:有没有符合 Windows XP 习惯的 Windows 7 资源管理器替代品?
下一篇:知乎的问题回答排序如何避免马太效应?