最好的错误修复/错误查找策略 - 所有语言

时间:2009-04-04 23:29:28

标签: debugging language-agnostic error-handling

我发现,在肩上冲浪其他人 - 更有经验的程序员 - 他们在(他们的)代码中找到(他们的)错误时都有不同的策略。

我并不是指理解编译器错误消息,而是理解错误消息发生的原因 - 立即遵循代码流并定位语义错误。这听起来太容易了。

问题是:东西往往会变得庞大。我无法遵循我的所有3000行代码并牢记一切,包括自动生成的GUI代码。即使我把作品分开,重新开始并重新阅读所有内容仍然太多了。

我只是想知道最常见的做法是让东西工作:)。如果您不理解编译器抛出错误消息的原因,您会怎么做?

4 个答案:

答案 0 :(得分:4)

我最好的策略是制定多种策略。也就是说,我最好的策略是:

  • 什么也不做。毫无疑问,你所能确定的任何东西都是躲藏下来的磐石。如果你永远不会把岩石翻过来,你就永远找不到它们。
  • 形成假设并测试它们。通过测试它们,我的意思是特别想出一个你可以执行的实验,如果(并且只有)你的假设是正确的,它将显示一个结果。如果是错误的话会有所不同。
  • 每隔几年花一个周末观看古老的科伦坡剧集。
  • 不要被评论所吸引;只信任代码。
  • 采取婴儿步骤。比你咀嚼更多只是意味着你会窒息。
  • 定义问题,直到它上面有一个尖锐的尖点。很多时候,这将为您提供蝙蝠的解决方案。无论如何,你几乎没有机会解决你无法定义的问题。
  • 确保您可以重现该问题。找到最简单的重现它的案例。
  • 找到最接近你最简单的失败案例。
  • 记录将回答问题的数据,而不仅仅是填补空间。

答案 1 :(得分:3)

编译错误不是错误,他们是你的朋友。所有程序员都害怕的时刻是他们的代码编译和链接没有错误,他们必须实际运行该死的东西。那就是虫子开始出现的时候了。

编译器错误指定发生错误的实际行(通常为正或负1)。他们通过分析语法来做到这一点,他们不分析“代码流”或语义。作为程序员的任务是纠正语法;错误存在于语义中,只有在程序编译和运行时才能进行调查。

答案 2 :(得分:0)

如果您不理解编译器抛出错误消息的原因,则需要将消息复制到stackoverflow或Google搜索框中。除了一些值得注意的例外,编译器是我们的朋友......我想......

答案 3 :(得分:0)

将您的代码分成小的有意义的部分。

关键是有意义的,你应该能够记住一个部分的功能,而无需再次阅读它的代码。