加载中...
契约式设计是一种软件设计方法,把模块之间的协作看作双方需履行的契约,通过明确规定前置条件、后置条件和不变式来界定各自的责任与义务。它有助于提升软件的正确性、可靠性和可维护性。

| 中文名 | 契约式设计 |
| 外文名 | Design by Contract |
| 提出者 | 伯特兰·迈耶 |
| 原生语言 | Eiffel |
| 三要素 | 前置/后置条件、不变式 |
契约式设计是一种以契约思想界定软件组件协作关系的设计方法。它要求为每个方法明确约定调用前必须满足的条件、执行后必然保证的结果,以及对象始终保持的性质。
契约式设计由计算机科学家伯特兰·迈耶(Bertrand Meyer)提出,并在他设计的 Eiffel 语言中得到原生支持。其灵感来自商业契约:调用方与被调用方各有义务,只要调用方满足约定的前提,被调用方就承诺交付约定的结果。这种明确的责任划分让程序行为更可预测。
契约式设计适用于对可靠性要求较高的系统,能清晰界定错误归属:前置条件失败说明调用方用法有误,后置条件或不变式失败说明实现有缺陷。它与断言机制天然契合,许多语言通过断言或专门的契约库来表达这些条件。它也为自动化测试和形式化验证提供了明确的规格依据。
问:契约式设计和普通的参数校验有何不同?答:参数校验多是防御性的运行时检查,契约式设计则把条件提升为明确的规格约定,清晰划分调用方与实现方的责任边界。
问:没有语言原生支持能用契约式设计吗?答:可以。即便语言不原生支持,也能通过断言、文档注释或第三方契约库表达前置后置条件,关键在于贯彻责任明确的设计思想。

| 中文名 | 契约式设计 |
| 外文名 | Design by Contract |
| 提出者 | 伯特兰·迈耶 |
| 原生语言 | Eiffel |
| 三要素 | 前置/后置条件、不变式 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧