design-by-contract

3 posts

你的验证层比业务逻辑还庞大

手动验证会让 codebase 膨胀不堪,却依然遗漏边界情况。下面介绍如何通过声明式 schemas 强制执行 runtime contracts,同时让它们不碍你的事。

每次 API 收到请求,你都要验证。每次函数收到来自外部系统的参数,你都要检查。如果手动完成这些工作,单个端点积累的验证代码就可能超过业务逻辑本身。 这是 runtime contracts 的隐性成本。你需要它们,因为 type system 会撒谎:通过 HTTP 传输的…

AI 安全栈: types、contracts、property tests 与 mutation gates

如果你想让 AI-generated code 能在生产环境里站得住,光靠 code review 不够。你需要一套从 type constraints 到 mutation testing 与 runtime containment 的分层安全栈。

AI-generated code 最大的危险,不是它总是错的。 真正危险的是,它经常“看起来已经对得足够可以 merge”。 这正是风险所在。明显有问题的 code 往往会被挡住。真正会进生产的是那种看起来合理、能过几个 happy-path tests、却悄悄削弱关键 boundary 的实现。…

为什么很多优秀的工程策略直到 AI 出现才真正变得划算

Design by contract、property-based testing、mutation testing、model checking 从来不是坏思路。真正的问题是它们长期需要太多专业判断才能维持,而 AI 正在改变这笔账。

软件工程里有很多方法,你一读就会觉得“这当然应该这么做”。 当然应该用 contracts 明确 function 能接收什么、必须返回什么。当然 tests 不该只写几个人工挑选的例子,而应该验证 properties。当然团队不该把 coverage 当成质量代理,而应该真的去判断 tests 能不能抓到…