本文主要记录阅读剑指Offer这本书所遇到的算法解释并作一些个人的拓展,其中的算法面试题请看剑指Offer面试题集
第三章 高质量代码
3.2代码的规范性
- 书写清晰:字母书写清楚,思路清晰
- 布局清晰:合理的缩进,括号对齐成对
- 命名合理:完整的英文单词组合
3.3代码的完整性
- 功能测试:首先保证代码完成基本功能,特殊输入等
- 边界测试:循环结束条件是否正确,递归终止边界值是否正确
- 负面测试:错误输入,非法输入的处理方式
通常有3种错误处理方式:
- 1.函数返回值:如Windows的API中返回值为0则调用成功,返回值非0则调用失败,根据非0值可以判断出错原因,但是这种方式不直观且不易传递返回结果给其他函数
- 2.设置全局变量:我们可以在返回值中传递计算结果了,如果运行出错,可以调用函数分析出错的全局变量,从而得出出错的原因,缺点是调用者容易忘记检测全局变量,在调用出错时忘记做相应错误处理,留下安全隐患
- 3.抛出异常:函数运行出错我们可以抛出异常,根据不同的出错原因定义不同的异常类型,调用者根据异常类型就能知道出错原因,可以利用try-catch语法抛出异常,逻辑清晰
3.4代码的鲁棒性
鲁棒性指程序能付判断输入是否符合要求并对不符合要求的输入给予处理
容错性是鲁棒性的一个体现,对于发生异常输入,需要养成防御性编程的习惯,对于异常情况能作出相应处理