Linux 版 (精华区)
发信人: pangwa (everything will go end?), 信区: Linux
标 题: (Eric Raymond)大教堂和市集(5)
发信站: 哈工大紫丁香 (Mon Jan 24 14:18:04 2005), 转信
五. 什么时候玫瑰不是玫瑰?
在研究了Linus的行为和形成了为什么它成功的理论之后,我决定在我的工程
(显然没有那么复杂和雄心勃勃)里有意识的测试这个理论。
但我首先做的事是熟悉和简化Popclient。 Carl Harris的实现非常好,但是
有一种对许多C程序来说没有必要的复杂性。他把代码当作核心而把数据结构当作
对代码的支持,结果是代码非常漂亮但是数据结构设计得很特别,相当丑陋(至少
对以这个老LISP黑客的标准来看),然而除了提高代码和数据结构设计之外,重写
它还有一个目的,就是要把它演化为我彻底理解的东西,对修改你不理解的程序
中的错误负责可不是一件有趣的事。
第一个月我只是在领会Carl's的基本设计的含义,我所做的第一个重大修改
是加入了IMAP支持,我把协议机重新组织为一个通用驱动程序和三个方法表(对应
POP2、POP3和IMAP),这个前面的修改指出一个需要程序员(特别是象C这种没有自
然的动态类型支持的语言)记在脑中的一般原理:
9. 聪明的数据结构和笨拙的代码要比相反的搭配工作的更好
Fred Brooks也在他第11章中讲道:“让我看你的[代码],把你的[数据结
构]隐藏起来,我还是会迷惑;让我看看你的[数据结构],那我就不需要你的[代
码]了,它是显而易见的”。
实际上,他说的是“流程图”和“表”,但是在三十年的术语/文化演进之
后,事情还是一样的。
此时(1996年9月初,在从零开始六个月后),我开始想接下来修改名字——毕
竟,它已不仅仅是一个POP客户,但我犹豫了,因为还没有什么新的漂亮设计呢,
我的popclient版本需要有自己的特色。
当fetehmail学会怎样把取到的邮件转送到SMTP端口时,事情就完全改变了,
但是首先:上面我说过我决定使用这个工程来测试我关于Linus Torualds所做的
行为的理论,(你可能会问)我怎样做到这点呢? 以下面的方式:
1. 我尽早尽量频繁的发布(几乎从未少于每十天发布一次;在密集开发的时候
是每天一次)。
2. 我把每一个和我讨论fetchmail的人加入一个beta表中。
3. 每当我发布我都向beta表中的人发出通告,鼓励人们参与。
4. 我听取beta测试员的意见,向他们询问设计决策,对他们寄来的补丁和反馈
表示感谢。
这些简单的手段立即收到的回报,在工程的开始,我收到了一些错误报告,
其质量足以使开发者因此被杀掉,而且经常还附有补丁、我得到了理智的批评,
有趣的邮件,和聪明的特征建议,这导致了:
10. 如果你象对待最宝贵的资源一样对待你的beta测试员,他们就会成为你最
宝贵的资源。
--
飞扬的青春
自由的享受
----欢迎光临Linux版
※ 修改:·pangwa 于 Jan 24 14:22:31 修改本文·[FROM: 210.46.79.57]
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 210.46.79.57]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.514毫秒