防御性编程(Defensive Programming)
缩写:无
简述
假设周围代码与输入可能违背约定,从而增加检查、默认安全行为与降级的实践取向。适度防御提高稳健;过度防御掩盖设计错误并增加噪音。
使用场景
公共库边界、不安全输入、遗留协作面。
实践与应用
• 在边界防御,在内聚模块可契约编程
• 失败要可观测
• 与断言/类型配合
注意事项
• 处处防御导致无法暴露 bug
• 静默修复坏数据
对比与易混
| 防御 | 契约 | |
|---|---|---|
| 假设 | 对方可能违约 | 对方应守约 |
| 适用 | 边界、不可信输入 | 内聚模块内部 |
关联术语
• 校验:边界上的具体检查
• 契约式设计:假设对方守约的对照取向
• 错误处理:违约时的应对
• 断言:内部不变量的检查