剑指offer 第三章 高质量的代码
代码的规范性
1. 清晰地书写,在纸上写代码不要太潦草
2. 清晰的布局,注意缩进层次
3. 合理的命名,建议使用完整的英文单词命名变量
代码的完整性
- 功能测试:尽量打破常规思维限制,
- 边界值的测试用例:
1)数组元素的第一个和最后一个
2)循环的第 0 次、第 1 次和倒数第 2 次、最后一次 - 对非法输入的检测。
例题:
等价类划分,指的是一种典型的、重要的黑盒测试方法。其就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理的”覆盖,以此来发现更多的软件缺陷
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
我们就可以对题目进行等价类划分,把数值分成正数、负数和零,把整数分成正整数、负整数和零。
从中就可以找到几个典型的情况:
- 0的0次幂不存在,其余的数的零次幂为1
- 所有数的正整数次幂都可以连乘算出
- 0的负数次幂不存在,正数和负数的负数次幂可以用倒数算出
代码的鲁棒性
鲁棒( robust)是指程序能够判断输入是否合法,对不合法的输入进行合理的处理。
最简单的处理方法就是在程序入口处添加代码验证输入是否合法,但有时候问题并不是这样简单,比如删除链表的倒数第k个节点,如果k大于链表的长度时如何处理。