WebMD
本页大纲

防御性编程(Defensive Programming)

缩写:无

简述

假设周围代码与输入可能违背约定,从而增加检查、默认安全行为与降级的实践取向。适度防御提高稳健;过度防御掩盖设计错误并增加噪音。

使用场景

公共库边界、不安全输入、遗留协作面。

实践与应用

• 在边界防御,在内聚模块可契约编程
• 失败要可观测
• 与断言/类型配合

注意事项

• 处处防御导致无法暴露 bug
• 静默修复坏数据

对比与易混

防御 契约
假设 对方可能违约 对方应守约
适用 边界、不可信输入 内聚模块内部

关联术语

• 校验:边界上的具体检查
• 契约式设计:假设对方守约的对照取向
• 错误处理:违约时的应对
• 断言:内部不变量的检查