防御式编程介绍
防御式编程(Defensive Programming)是提高软件质量的辅助手段怎么理解呢?防御式编程思想的理解可以参考防御式驾驶:
在防御式驾驶中要建立这样一种思维,那就是你水远也不能确定另一位司机将要做什么。这样才能确保在其他人做出危险动作时你也不会受到伤害。你要承担起保护自己的责任,哪怕是其他司机犯的错误。
核心思想:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。
具体措施:
1. 对输入进行体检
1)检查输入源(如:文件,网络、控制台等)数据的合法性
2)检查每一个函数输入参数的合法性处理方式:一旦非法输入被发现,那么应该根据情况进行处理11。防御式编程的最佳的形式是在一开始就不引入错误。
2. 对非预期错误使用断言
1)空指针。
2)输入或者输出参数的值不在预期范围内。
3)数组的越界
处理方式:如果断言的条件返回错误,则终止程序执行。
原型定义:
#include <assert.h>
void assert( int expression );
assert 的作用是先计算表达式 expression ,如果其值为假(即为 0),那么它先向 stderr 打印一条出错信息,
然后通过调用 abort 来终止程序运行。
bool isPeak(int grid[N][N], int r, int c){ assert( 0<r && r<N-1); assert( 0<c && c<N-1); if((grid[r][c] > grid[r-1][c])&& (grid[r][c] > grid[r+1][c])&& (grid[r][c] > grid[r][c-1])&& (grid[r][c] > grid[r][c+1])){ return true; }else{ return false; } } |
posted on 2022-10-29 14:43 会飞的鱼-blog 阅读(21) 评论(0) 编辑 收藏 举报 来源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!