用途:这是一套编程原则,要求在写错误处理、空值检查、回退、可选链、重试、断言、守卫分支或配置跳过之前先做判断,避免用防御性代码掩盖真正的缺陷。
核心思路:先划出防线,把不可信的外部输入与可信的内部状态分开。必须能说出具体状态、它的产生者、代表它的值或控制路径,以及拟议处理会做什么;说不清的状态就不加检查。
来源分类:用户、文件、网络、其他进程以及程序控制之外的系统属于防线之外;程序自身产生并维护的状态属于防线之内。外部产生者只在信任边界校验一次并拒绝非法输入;预期产品行为(如记录不存在、权限拒绝、网络失败)由拥有它的边界处理。内部产生者要先追踪所有能产生该状态的路径,追踪需覆盖访问过滤、生命周期转换、异步工作和部分投影。
响应选择:可达的预期产品行为在所属边界处理;可达的不变量违反要在权威写入方修复根因并带上下文快速失败,同一不变量只保留一个执行层,删除下游重复守卫,不用回退、默认值或吞掉错误来恢复;不可达状态不写守卫,删除或重构该分支,让权威写入方拒绝非法状态,改为测试可达行为与写入方的拒绝。
规则:无人值守路径上的 catch 只能以有界重试、带完整载荷的死信存储,或通过既有错误上报通道带上下文报告收尾;只记录并继续等于失败未解决。断言必须为真,为假时带上下文崩溃;断言后又处理同一条件与不变量矛盾。拒绝用功能开关跳过、环境变量跳过、TODO 变通等捷径掩盖缺陷,应修复根因;若根因超出本次改动范围,告知操作者是什么阻碍了修复,保持改动范围小并让缺陷可见。
限制:资料未提供具体安装命令、平台支持、收费方式或代码示例。