知识卡片

前置只写可控

普通读书笔记卡 · 1711.a

内容

前置条件应只包含调用者能完全控制的事项;文件是否被外部进程删除这类环境变化,不该算调用者违规。发散:把不可控风险写进异常处理,把可控约束写进前置条件。

参考来源

- 位置:《你真的会写代码吗-2021》第5章《有自我意识的代码:通过监控实现可靠性》"5.1.1 前置条件和后置条件"(源文件:_epub-src/OEBPS/Text/0015.xhtml) - 结论依据:原文明确"前置条件应该只包括调用者能完全控制的属性。假如一个方法接收文件名作为参数并打开该文件,它不能在前置条件中要求该文件必须存在,因为调用者无法完全确保文件存在(另一个进程可以随时删除该文件)",并说明这种情况下应改用检查型异常处理。 - 原始内容:前置条件应该只包括调用者能完全控制的属性。假如一个方法接收文件名作为参数并打开该文件,它不能在前置条件中要求该文件必须存在,因为调用者无法完全确保文件存在(另一个进程可以随时删除该文件)。在这种情况下,该方法仍然可以抛出一个异常,但该异常属于检查型异常(checked exception),强制调用者处理它。