多使用assert
这个小组的代码与Word 代码之间一个明显的区别是Word 代码从过去到现在一直都使
用断言和调试代码,而他们的代码却几乎没有使用断言。因此,其程序员没有什么好的办
法可以确定其代码中的实际错误情况,错误只能慢慢地暴露出来。如果他们在代码中使用
了断言,这些错误本该在几个月之前就被检查出来。
给不够清晰的断言加上注解即可。
对函数的每个参数进行断言。
在进行防错性程序设计时,不要隐瞒错误
要利用不同的算法对程序的结果进行确认
由于速度是电子表格软件
成功的关键,所以为了保证绝不对其它无关单元中的公式重新计算,Excel 使用了一个相
当复杂的算法。这样做的唯一问题是因为该算法过于复杂,所以对其进行修改难免会引进
新的错误。Excel 的程序员当然不希望这种事情发生,所以他们又编写了一个只用在Excel
调试版本的重新计算工具。当原来的重新计算工具完成了重新计算工作之后,再用这个重
新计算工具对含有公式的所有单元进行一遍虽然缓慢但很彻底的重新计算。如果两次计算
的结果不同,就会触发某个断言
要消除随机特性 ─── 使错误可再现
然而,最好的测试代码应该是透明的代码,不管程序员
能否感觉到它们的存在,它们都会起作用。
那么,程序员测试其程序的最好办法是什么呢?是对其进行逐条的
跟踪,对中间的结果进行认真的查看
不要等到出了错误再对程序进行逐条的跟踪
,对代码进行逐条跟
踪的程序员很快就会学会编写较小的容易测试的函数,因为对于大函数进行逐条的跟踪非
常痛苦
程序员还会花
更多的时间去考虑如何使必需做的大变动局部化,以便能够更容易地进行相应的测试。
源级调试程序可能会隐瞒执行的细节
对关键部分的代码要进行汇编指令级的逐条跟踪