本文讲的是<b>C语言程序设计进阶教程一第3章 预防、检测及消除bug</b>,一些书中建议,软件应该是精心设计的、认真地编写且从不被调试。这些书不会说任何关于调试相关的内容。以我在编写程序、与学生一起工作以及与在软件行业人士交流的经验来看,即使软件是被认真的计划并编写的,调试也很难完全避免。某种程度上讲,调试就像是在编辑一篇文章。想要在不进行任何编辑的情况下写出一篇好文章是非常困难的。虽然不能完全避免调试,我们也不应该依赖它。有经验的程序员会仔细地防止出现bug,并尽早地发现它们。
许多人是通过写小程序(每个程序几十行代码)学习软件开发的。这样很好,因为学习就是应该分阶段性进展的。问题在于,很多人在他们想要写大一些的程序时,还坚持着那些在写小程序时可以接受的习惯。写一个400行的程序和写一个40行的程序需要不同的策略。本书是为那些在学习如何编写“代码行数”(LoC)为100到1000之间程序的人所著的。虽然LoC并不是一个衡量软件复杂度的好方法,但它却扮演着考量一个程序复杂度的基本尺度。寻找衡量软件复杂度的好方法不涵盖在本书范围之内。相反,本书会给出一些关于如何编写正确程序的建议。
3.1 开发软件≠编码
基于编写小程序的经验,一些同学会有“编码→测试→调试”的习惯。不幸的是,这是开发软件的错误方法。专业的程序员会使用策略来预防、检测及消除软件bug。编码不是在开发软件。编码的意思是在文本编辑器中输入语句。编码只是开发软件的一个小部分。
在输入代码之前,你首先需要知道的是你为什么在开发这个软件。也许你是在完成编程课安排的作业。在这种情况下,你应该问清楚这些任务的目的。尤其是应该有一些学习的目标。不知道这些目的,就不可能知道怎样去评价软件。随着软件变得复杂,这也将随之变得更为重要。复杂的软件有许多部分,你需要知道为什么需要这些部分,它们之间是怎样相互影响的。开发软件需要编程前、编程中、编程后的许多步骤。下面为你讲述一些原则。
原文标题:C语言程序设计进阶教程一第3章 预防、检测及消除bug