Java中的前置条件和后置条件



让我思考的问题:

当我们谈到方法中的前置条件时,我们指的是由方法本身验证的条件(1(还是由调用方验证的条件?例如

(1)
...
withdrawal(100);
}
void withdrawal(int v)
{
if (v<balance)
balance-=v;
else
throw new exception;
}
(2)
...
if (getBalance()>100)
withdrawal(100);
else
throw new exception;
}
void withdrawal(int v)
{
balance-=v;
}

后置条件也是如此?

两者都在方法本身中进行验证。

有关在Java中编程前置和后置条件的建议,请参阅:https://docs.oracle.com/javase/8/docs/technotes/guides/language/assert.html#usage-条件

你也可能对维基百科上关于合同设计的文章感兴趣。请注意,在不同的语言中,前置条件和后置条件的实现方式不同,在没有DbC一流支持的语言(如Java(中,您可以使用插件或工具来帮助执行合同。例如,注释可以是Java中的另一种方法。

在没有额外工具帮助的情况下,先决条件只是以防御编程风格作为保护子句来实现。在Java中,null检查强制执行一个普遍存在的前提条件。

最新更新