程序设计实践:排错艺术与错误预防

需积分: 0 1 下载量 128 浏览量 更新于2024-08-01 收藏 714KB PDF 举报
"B.Kernighan(Addison-Wesley1999)程序设计实践(中译本)05" 在《程序设计实践》这一章中,作者Brian W. Kernighan深入探讨了编程过程中的一个重要环节——排错。排错,即找出并修复程序中的错误或bug,是每个程序员都会遇到的日常任务。尽管“bug”这个术语并非源自计算机领域,但在当今的编程世界中,它已经成为描述程序中错误的常用词汇。 作者指出,程序的复杂性往往会导致大量的错误。由于软件通常由多个组件构成,这些组件之间的相互作用可能导致无数种潜在问题。为了减轻这个问题,程序员可以利用信息隐蔽、抽象、接口等技术来降低不同部分之间的耦合度。然而,尽管有一些如程序证明、模型检验和形式化验证等方法试图确保软件的正确性,但它们主要应用于小型问题,对于大规模软件的复杂性仍然是挑战。 排错是一项既耗时又困难的任务,优秀的程序员会认识到他们在排错上的投入与编写代码的时间相当。从错误中学习是提高的关键,每个发现的错误都能帮助我们更好地预防同类错误,并在出现问题时更快地定位问题。 作者提出了一系列有助于减少排错时间和提高代码质量的策略,包括良好的设计、遵循编程规范、边界条件测试、使用断言和合理性检查、实施防御性编程、设计良好的接口、限制全局变量的使用以及利用各种检查工具。这些方法强调了预防优于治疗的原则。 语言设计在减少错误方面也起着重要作用。一些编程语言特性,如数组下标检查、垃圾回收、内置字符串类型和强类型系统,可以降低特定类型错误的发生。然而,其他特性如`goto`语句、全局变量、不受限制的指针和自动类型转换可能会引入新的问题。因此,程序员需要了解自己使用的语言的特性,以便有效地利用其优点并避免可能的陷阱。 这本书章节强调了排错作为编程实践中的核心技能,提醒程序员不仅要专注于编写代码,还要注重代码的可维护性和可靠性。通过学习和应用有效的排错策略,以及理解编程语言如何影响错误的发生,程序员可以提升自己的技能,编写出更健壮、更少bug的软件。