程序员应从一开始就避免写 bug,而不是花时间调试
来源标题:Don't Write Bugs
文章引用 Dijkstra 1972 年图灵奖演讲观点,认为高效程序员不该把时间浪费在调试上,而应从源头避免引入 bug。作者高中时读到 Robert Ward 的调试文章后,用两年记录自己遇到的编译期和运行期错误,并据此调整编码习惯,后来写成 Elements of C Style 网站。作者如今认为那套建议过于底层且偏 C 语言,已不再发布。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
“如果你想要更高效的程序员,你会发现他们不该把时间浪费在调试上,他们从一开始就不该引入 bug。” ——Edsger Dijkstra,图灵奖讲座(1972)
我高二那年,收到了一期《Computer Language》杂志,它改变了我编程的方式。那篇由 Robert Ward 撰写的专题文章讲的是调试,开篇第一句就是:
调试是编程中重要、耗时且不可或缺的一部分。
我没有读下去,因为我在“不可或缺”这个词上卡住了。为什么会这样?为什么我们就不能直接写出没有 bug 的程序呢?
接下来的两年里,我一直记录自己遇到的 bug,包括编译期错误和运行期错误,并据此调整自己的编码方式,避免那些常见的错误。最终我写了一个叫《Elements of C Style》的网站,把这些建议收录了一部分。那个网站现在已经不再发布(除了那个链接),因为这些建议层次太低、又偏向 C 语言,如今已经没什么用了。于是我改在本站“Programming”栏目里写文章,这些文章在范围上层次更高,示例也使用了更现代的语言(Java)。
大三那年我加入了编程竞赛队。在编程比赛中,任何花在调试上的时间,都是队里另一名成员本可以用电脑打字的时间(三名队员共用一台电脑),所以我们专门练习写无 bug 的代码。经过两年的练习,再加上此前两年的 bug 记录,我已经能够写出规模可观的程序(数千行),并且第一次运行就能通过编译、不出现运行期错误。现在我做不到了(那已经是 35 年前的事了!),但这段经历让我确信:bug 不会自己悄悄溜进我们的代码里。是我们把它们放进去的,而我们也可以决定不把它们放进去。把 bug 当作是自己有意写进去的,这种做法对不写出 bug 大有帮助。
如果你只想要一条能减少 bug 数量的建议,那就是:
经常重读你的代码。
每写完几行代码(3 到 6 行,函数中的一个小块),就重读一遍。这个习惯为你省下的时间,会超过任何其他简单的改变。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。