C++ 思路跳跃
跟踪程序执行流程是阅读代码的一种方式。另一种可选的方式我称之为“思路跳跃”。 当你遇到一个函数调用,我们不去跟踪执行流程,而是假定函数工作正常并返回合适的值。
事实上,我们前面已经使用过思路跳跃,比如调用内置函数。当调用cos或exp时,我们并没有检查函数的实现。我们只是假定这些函数能正常工作,因为设计库的都是很厉害的程序员。
调用自己写的函数也是如此。例如,在5.8节我们写了一个函数isSingleDigit用来判断一个数是否处于0和9之间。只要能够通过测试或者检查代码确定这个函数是正确的,我们就能再次使用这个函数而不需要检查代码。
这个方法同样适用于递归函数。碰到递归调用时,我们不是跟踪执行流程,而应假定递归调用正常工作(能产生正确的结果),然后提出问题,“假设能够计算n-1的阶乘,能否计算n的阶乘?”。很明显,可以通过n-1乘以n来计算n的阶乘。
当然,当你甚至还没有编写完的时候就假设函数正常工作可能有点奇怪,但是这也是我称之为“思路跳跃”的原因。