哪些项目的源代码最值得阅读?

(前面有人提到了 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/978

[2] oreilly.com/catalog/978

编辑于 2011-04-05 17:34

Published

Category

Zhihu

Tags