3.1.2 编程中
本文讲的是C语言程序设计进阶教程一3.1.2 编程中,这可能会让你感到吃惊:如果你想要正确且更快地完成程序,那就写更多的代码。写一些并不需要的代码。在你为了满足一个要求而把代码放到一个更大的程序之前,写一个小程序来测试你的解决方案。这叫作单元测试。如果你不能让一个函数正常工作,那你肯定不能在把很多函数放在一起之后让其正常工作。在你完成了程序的一些部分之后,要确保在继续下去之前这些部分可以正常工作。你需要去编写额外的代码来测试这些部分,因为其他部分还没有准备好。有一个经验法则:对于你需要写的每一行代码,你应该写三行额外的代码。这些额外的工作会帮助你理解你必须做什么,并且帮助你测试已经完成的工作。
总是使用一个自动缩进程序的文本编辑器。这样的编辑器可以帮助你在出错的地方检测大括号。为什么缩进很重要呢?因为更容易直观地检测未对齐的代码。使用正确的工具可以节省你宝贵的时间。
在运行任何测试用例之前一行一行地读你的代码。如果你之前没有试过这个方法,你会对这个方法的效果感到惊讶。读代码可以帮助你找到通过测试很难发现的问题。例如:
分号“;”结束了if条件。结果就是在“{”和“}”之间的代码不受if条件控制并且一直运行。
在你脑中运行一些简单的测试例子。如果不理解你的程序是做什么的,计算机也不会去执行你想要的功能。
在进行之前,写一些代码去测试某些条件是否已经满足。假设排序是某程序的一部分:在程序去做其他事情之前,先检查一下数据是否已经被存储好了。
避免复制粘贴代码。相反,通过创建函数来重构代码,这样就可以避免复制代码了。如果你需要对复制过来的代码进行微小的改变,使用函数的实参就可以实现这样的变化。这是行之有效的原则:相似的代码会导致错误的发生。你会很快记不住复制的数量,搞不清相似的代码之间的不同。要在多个复制而来的代码间保持一致性是很困难的。你将会发现你的程序在一些情况下是正确的,但在其他情况下就是错误的。要发现并移除这个类型的bug将会是非常费时间的。最好的策略就是从一开始就去避免它。编写一个一直报错的程序会比一个时而正确时而错误的程序要好一些。如果它一直在报错,问题总是来自仅仅一个地方,你就可以集中精力在这一处。如果问题不是一直出现,且来自很多可能的地方,那么找到并移除这样的错误就会更加困难。
使用版本控制。您是否听过这样的经历:“程序的一些部分昨天还正常工作。我做了一些修改,现在就完全无法工作了。我改动了很多地方以至于我根本不知道到底改动了哪里。”版本控制会让你看到与之前版本相比的改动。
解决所有的编译警告。许多调查显示警告很可能会是严重的错误,虽然它们不是语法错误。一些人会忽略警告信息,认为他们可以在让程序运行起来之后再去解决这些警告。然而,警告信息经常预示着一些会导致程序难以运行的问题。
原文标题:C语言程序设计进阶教程一3.1.2 编程中