防御性编程
思想指导:编码时,预见坏的情况,尽量保护自己,避免在将来出现问题。
它解决不了出现错误,也不是一种测试,更不是调试,它是一种根据出错经验在编码的时候预见性的设想边界问题并设计对策的思想。
需要在开发时间和设计系统的健壮性之间权衡。是一种编程习惯,但需要在取舍之间切换这个思想。
具体:
- 做好设计
- 不要相信用户,以及维护者
- 编码目标是清晰,不是简洁。不要为了简洁搞的更复杂。
- 不要让你的维护者做更多的事情。
- 检查返回值
- 处理内存
- 避免强制转换,规范并统一数据类型。
- 提供默认值
- 预估数值上下限,避免溢出。
- 各种错误处理,尽量考虑用户无感处理或者明显提示,跳转等。一般使用loading和disable禁止用户接下去的操作。
- 网络错误
- 弱网错误
- 边界错误
- 第三方接口错误
- 检查判断,避免空白屏和无数据展示。
- 前端校验
其实这种思想在框架里面多多少少都接触过,或者在学习编程的时候,老师多多少少都透露过这种习惯或者思想的指导。只不过如今被一个名词代替成为了体系的一部分或者面试的一部分谈资罢了。