对一个简单循环,通常需要注意三种情况: 开始的情况,任意选择的中间情况,以及最终的情况.在你创建循环的时候,应在脑海里运行这三种循环情况,以确认该循环不会出现任何 off-by-one 错误.如果有一些特殊情况是与第一次或者最后一次的情况都不同,那么也要检查他们.如果循环中包含了复杂的计算,那么就拿出计算器来手动地检查这些计算是否正确
    
    是否愿意执行这种检查,是高效程序员和低效程序员之间的一项关键差别.高效的程序员既会在脑海里进行模拟,也会手动地执行运算,因为他们知道这些手段将会有助于找出错误来.
    
    低效的程序员会随意地做一些试验,直到他们找到了一种看上去能工作的组合.如果某个循环没有按照想象的那样去工作,低效的程序员可能会把<改成<=.如果还不行,他们就会把循环下表加 1 或者减 1.这样做最终可能会碰出正确的组合来,也可能把原由的错误改成了另一个更微妙的错误.即使这样随意的开发过程能够产生出一个正确的程序,这些程序员也不明白为什么这个程序是正确的.
    
    你可以通过在头脑中模拟和手工运算而获益多多.这种智力训练带来的好处是:在最初的编码阶段少犯错误,在调试阶段更快地找出错误,以及从整体上更好地理解应用程序.它意味着:你能够真正理解你的代码是如何工作的,而不是瞎猜.