java – 为什么番石榴没有后置条件?我可以用什么?

所以,Guava具有简单而有用的Preconditions来检查方法论点。但是我猜想也有一个“后置条件”类是合理的。还是只是因为java提供断言?

既然类似这样的类不存在,那么在方法返回之前,什么是“最佳”(实践)替代方式来检查条件?

最佳答案
我将在方法本身中使用Java assert关键字对后置条件进行编码。

单元测试或后置条件?

单元测试和后置条件用于不同的目的。

单元测试中的断言提供了对一个输入向量的方法结果的检查。这是一个指定一个具体情况的预期结果的神话。

方法本身的断言验证了后置条件成立的任何输入。对于所有可能的情况,它是指定(属性)预期结果的一个oracle。
这样一个后置条件or oracle与自动测试技术很好地结合在一起,它很容易生成输入,但很难为每个输入生成期望值。

番石榴后条件?

至于为什么Guava有一个Precondition课程,但没有Postcondition课,这是我的理解。

根据方法的输入或对象的状态,Guava Preconditions有效地为您想要抛出特定类型的异常(非法参数,空指针,索引超出界限,非法状态)的常见情况提供了许多短语。

对于后置条件,这种常见情况较少。因此,不需要提供一个简短的投掷特定种类的例外。一个失败的后置条件就像一个HTTP 500“内部服务器错误” – 我们知道执行我们的方法时出错了。

(请注意,Guava的前提条件与纯design-by-contract的概念有很大的不同,如果不符合前提条件,根本就不能保证 – 即使是合理的例外,Guava的前提条件也提供了有用的功能,公共API更防御)。

转载注明原文:java – 为什么番石榴没有后置条件?我可以用什么? - 代码日志