debugging - 随着代码变得越来越复杂,有哪些好的策略可以修复错误?

标签 debugging language-agnostic

我“只是”一个业余程序员,但我发现随着我的程序变得越来越长,错误变得越来越烦人——而且更难跟踪。就在一切看似顺利的时候,一些新的问题会出现,似乎是自发的。我可能需要很长时间才能弄清楚导致问题的原因。其他时候我会添加一行代码,它会破坏另一个单元中的某些内容。如果我认为一切正常,这可能会令人沮丧。

这对每个人来说都很常见,还是更像是一种新手?我听说过“单元测试”、“设计框架”和其他各种听起来会减少错误、使我的应用程序“健壮”的概念,并且所有内容一目了然:)

那么,对于受过专业培训的人来说,漏洞有多大?

谢谢——Al C.

最佳答案

“进行修复,在别处引起问题”的问题是众所周知的,并且确实是单元测试背后的主要动机之一。

这个想法是,如果您为系统的每个小部分独立编写详尽的测试,并在每次您在任何地方进行更改时在整个系统上运行它们,您将立即发现问题。然而,主要的好处是,在构建这些测试的过程中,您还将改进代码以减少依赖关系。

这类问题的典型解决方案是减少耦合;减少不同的部分相互依赖。更有经验的开发人员有时具有以这种方式构建系统的习惯或设计技能。例如,我们使用接口(interface)和实现而不是类;我们将模型- View - Controller 用于用户界面等。此外,我们可以使用有助于进一步减少依赖关系的工具,例如“依赖注入(inject)”和面向方面的编程。

所有的程序员都会犯错。优秀且经验丰富的程序员构建他们的程序,以便更容易发现错误并限制其影响。

这对每个人来说都是一件大事。大多数公司花在维护上的时间多于编写新代码的时间。

关于debugging - 随着代码变得越来越复杂,有哪些好的策略可以修复错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/544696/

相关文章:

ios - 我的应用程序经常但随机地在应用程序加载时使整个手机崩溃

c - 奇怪的 lldb 行为(与 gdb 相比)C

javascript - 从 Google Apps 脚本调试客户端代码

debugging - gdb:寄存器值为 0xffaa 时的断点

c++ - 树状队列

language-agnostic - 您是否打印需求、设计文档和代码的硬拷贝?

java - 如何获得给定数字的下一个二的幂?

c# - 如何以编程方式停止调试?

algorithm - 给定 x,我怎样才能找到加起来为 x 的所有四个数字的集合

c# - 不同编程语言的库如何处理日期和时间、时间戳和持续时间、闰秒和 - 年、DST 和时区,...?