# 契约式设计

> 契约式设计（英语：Design by Contract，缩写为 DbC），一种设计计算机软件的方法。这种方法要求软件设计者为软件组件定义正式的，精确的并且可验证的接口，这样，为传统的抽象数据类型又增加了先验条件、后验条件和不变式。这种方法的名字里用到的“契约”或者说“契约”是一种比喻，因为它和商业契约的情况有点类似。

- ID: m08897
- 分类: system
- 领域: 系统论

## 定义

模块之间通过明确的"契约"（前置条件、后置条件、不变量）规定权责，调用方和被调用方各自履行义务。涵盖变体：契约精神、契约者视角、契约自由脚手架作用：责任边界清晰化。出错时能明确定位是谁违约，减少"踢皮球"和隐性依赖。

## 机制

Bertrand Meyer 提出的软件设计方法：把模块间交互视为契约——前置条件、后置条件、类不变式。机制是用形式化约定约束调用方与被调方，错约即报错。

## 练习

为每个例程明确前置（调用方保证）、后置（本例程保证）、不变式（始终真）。用断言/语言特性表达。运行时/静态检查违例。

## 脚手架用法

责任边界清晰化。出错时能明确定位是谁违约，减少"踢皮球"和隐性依赖。

[阅读网页](https://thinkingmodels.site/entries/detail/m08897)
