知识卡片

公有前置常开

普通读书笔记卡 · 1711.c

内容

公有方法的前置条件检查应在生产环境也保持开启,因为它防止外部误用继续污染系统状态;后置条件和不变式检查更适合用断言在开发期启用。发散:不同检查的运行成本和责任边界不同。

参考来源

- 位置:《你真的会写代码吗-2021》第5章《有自我意识的代码:通过监控实现可靠性》"5.1.4 检查契约"(源文件:_epub-src/OEBPS/Text/0015.xhtml) - 结论依据:原文给出明确准则"公有方法的前置条件检查应该始终开启,所以应该对它们使用基于if的常规检查……所有其他的检查应该只在开发过程中开启,包括后置条件和不变式检查……这时候应该使用断言",理由是"违反前置条件是因为调用者不遵守方法契约。违反后置条件或不变式则是因为类本身的问题"。 - 原始内容:公有方法的前置条件检查应该始终开启,所以应该对它们使用基于if的常规检查。所有其他的检查应该只在开发过程中开启,包括后置条件和不变式检查,以及对非公有方法的前置条件检查。这时候应该使用断言……违反前置条件是因为调用者不遵守方法契约。违反后置条件或不变式则是因为类本身的问题。