值得学习的源代码

以下内容源自知乎:


@江疆:
(前面有人提到了 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”的代码,可想而知质量是很高的。
http://shop.oreilly.com/product/9780596517984.do
http://shop.oreilly.com/product/9780596510046.do



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

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

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


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

MySQL源码和Apache的源码都是值得阅读的

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

Lua, Python, Nginx..代码有序结构良好,值得一看恩

java方面,struts,spring,acegi,tomcat,java自身的源代码.
学习这些代码,对WEB开发应该很有帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值