读程式码就像读犹太法典

阅读代码就像阅读塔木德一样

作者:周思博(Joel Spolsky)
译:[术士](/ wiki /用户:术士“用户:术士”)
2000年5月26日星期五
属于Joel on Software,http://www.joelonsoftware.com

Seth Gordon寄给我一些很棒的关于阅读他人程式码时的建议:

在一家以色列的犹太教学院念了大约八个月的书后,我第一份工作是在波士顿担任技术文件写作人员。

大约一年前,我和另一位同事试着读懂一支用yacc及Perl 写的丑陋程式,它的目的是用来产生我们的一些文件。把整份程式印出来之后,我们坐下来几乎是一行一行地检视。“由于yacc 的原理是这样,所以它碰到这种资料会执行这个函数… 这行是干什么用的?…在​​这个地方*这一沱资料看起来像什么? ..」

别的同事问我是怎么做到的,我就告诉他:「这就像读犹太法典一样。」

以下这些阅读犹太法典的技巧我想对阅读程式也会有帮助:

1.成对进行,并将想法大声念给对方听。

2.讨论。若你的伙伴说「这个代表X」但你却不了解箇中原因或有不同意见时,请他说明原因。

3。 在阅读程式时,有时候先读完前后的程式之后,中间的部份会较容易了解。若你读到一段程式卡住时,先试着跳过去,之后再看看能不能重读一遍(但你最终还是得回来)。

4。 程式的内部运作及外部用法都要理解了解内部运作时,应将一段一段的程式翻译成中文(或是你自己的母语);观察外部用法时,应将一大段程式转换成直觉的概念。若只看内部运作,难免见树不见林;若只看外部用法,却又难免流于猜测而未佐以具体的细节。

谢谢你,赛斯!很棒的建议!

![Page_of_Talmud.jpg(http://www.joelonsoftware.com/pictures/Page_of_Talmud.jpg)