Hashrocket公司创始人兼Addison-Wesley Professional出版社Ruby系列丛书编辑Obie Fernandez谈阅读错误消息的重要性。

姓名:

Obie Fernandez

Obie Fernandez Avatar

编程能力及工作经验:

Obie是Hashrocket公司创始人,Hashrocket是一家具有世界领先水平的web设计及开发咨询公司。Obie不仅是公认的技术领导者,而且经常在行业活动中发表演讲,此外他还是Addison-Wesley Professional出版社Ruby系列畅销书的编辑。在成立Hashrocket之前,Obie是ThoughtWorks的高级咨询师,专攻复杂的定制企业软件项目。自从上世纪80年代得到他的第一台Commodore VIC-20个人电脑起,他就一直在摆弄计算机,而且在上世纪90年代中期参与首批Java企业级项目时,Obie发现自己在正确的时间和地点成为了一名程序员。

Commodore VIC-20 and TV

Commodore VIC-20个人电脑及电视机

建议:

尽管以下建议似乎极为显而易见,但是我却常常必须对自己和其他人提起它:“在着手对代码进行额外修改之前,应该花点儿时间去理解位于异常/堆栈跟踪顶部的错误消息。(Take a moment to understand the error message at the top of an exception/stack trace before making additional changes to your code.)

我不明白为何遵循此建议会有这么困难,不过这些年里我已收集到了一些线索。首先,除非我们修改代码只是寻开心,否则我们总是处于某种程度的时间压力之下。而且在我们对某些代码进行微调的时候,我们通常会对哪些代码可以运行而哪些代码不能运行略知一二。我们通常会尝试某种解决方案,并进行额外的代码修改,尽管没有充分认识到那样做将会导致什么后果。然后你切换到你的程序或测试控制台去查看修改结果,接着数十行的堆栈跟踪信息会再次填满了你的屏幕。实际的错误消息几乎无法立刻看到。

就在短暂、近乎本能的瞬间,你做出了选择。是向上滚动至跟踪信息的顶部,然后查看到底出了什么错;还是假设出了某个错,然后跳到相应的代码那里并试着做些小修小改。我猜这么做是人之天性使然,要不就与我们当日所摄入的咖啡因数量有关,无论是何原因,但结果往往是它诱惑你去按着你的假设行动。

在结对编程时,我注意到在初学者身上这个坏习惯尤为突出。我认为这是因为在我们学习编程时,犯了如此之多的错误。而由此带来的不安全感使得我们想尽快完成那些小修小改。以我的经验来看,更有效率的做法是查看我们正在处理的错误或失败为何种类型,而不是盲目地返回代码,并尝试在我们的大脑中把它想清楚。

因此,一定要花点儿时间向上滚动,然后仔细查看位于堆栈跟踪顶部的实际错误消息。通常,你的第一反应是完全错误的,而且在一无所知的情况下横冲直撞只会浪费大量的时间和精力。


查看英文原文:"The Best Programming Advice I Ever Got" with Obie Fernandez

来自更多程序员的建议参见“我收到的最佳编程建议”(The Best Programming Advice I Ever Got)系列文章

“我收到的最佳编程建议”系列译文

  1. 千万别碰其他人的代码!——Russ Olsen
  2. 在你让代码可重用之前,应该先让代码可用。——Bill Wagner
  3. 在着手对代码进行额外修改之前,应该花点儿时间去理解位于异常/堆栈跟踪顶部的错误消息。——Obie Fernandez
  4. 调试前的思考十分重要——Rob Pike
  5. 编写更少的代码。——Russ Olsen
  6. 阅读的资料一定要比你编写的内容多得多,而且要坚持阅读高质量的资料。——Danny Kalev
  7. 翻译中……