微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Java中的前置条件和后置条件

让我思考的问题:

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

(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-conditions

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

在没有其他工具的帮助下,先决条件以防御性编程风格简单地实现为 guard clauses。在 Java 中,空检查强制执行无处不在的先决条件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。