1.瓶颈子程序是加入断言的绝佳之处,因为它可以使我们用很少的代码就能够进行很彻底的错误检查。
2.通常,子系统都要对其实现细节进行隐藏,所隐藏的实现细节可能相当复杂。在进行实
现细节隐藏的同时,子系统为用户提供了一些关键的入口点。程序员通过调用这些关键的入
口点来实现同子系统的通讯。因此如果在程序中使用这样的子系统并且在其调用点加上了调
试检查,那么不用花很大力气就可以进行许多的错误检查。
3.这里给出的建议是:当子系统编写完成之后,要问自己:“程序员什么情况下会错误地使用这个子系统,在这个子系统中怎样才能自动地检查出这些问题?”
4.要消除随机特性─── 使错误可再现。例:在消除无定义特性过程中不能简单的用0去填充申请的内存,要真正的消除随机性,防止隐藏错误!!
5.冲掉无用的信息,以免被错误地使用。对于已经释放的系统内存,出于防止依然有指针错误,则将所有有用内存信息覆盖掉在释放!!!
6.用#ifdef 来说明局部变量很难看!
7.如果某件事甚少发生的话,设法使其经常发生
8.保存一个日志,以唤起你的注意,保存调试信息,以便进行更强的错误检查
9.建立详尽的子系统检查并且经常地进行这些检查
10.这就是精心设计子系统测试代码的好处─── 当测试代码将错误限制在一个局部的范围之内后,就通过断言把错误抓住并送到“广播室”,把正常的工作打断。对于程序员来说,这真是再好不过的反馈。努力做到透明的一致性检查。
11.如果可能的话,把测试代码放到所编写的子系统中,而不要把它放到所编写子系统的外
层。不要等到进行了系统编码时,才考虑其确认方法。在子系统设计的每一步,都要考
虑“如何对这一实现进行详尽的确认”这一问题。如果发现这一设计难于测试或者不可
能对其进行测试,那么要认真地考虑另一种不同的设计,即使这意味着用大小或速度作
代价去换取该系统的测试能力也要这么做。
暂时没有评论