程序员面试必考题(二十二):Java中的前置条件和后置条件

转载自微信公众账号:开点工作室(ID:kaidiancs)

Java程序中,程序员可以使用前置条件与后置条件,来控制是否执行方法及判断方法是否正确执行。

前置条件(precondition)是一条条件语句,在方法执行前必须为真。除非前置条件满足,否则不应该使用方法,也不能期待方法能正确执行。前置条件可以与方法参数的描述相关。例如,计算x平方根的方法可以用x≥0作为前置条件。


后置条件(postcondition)是一条语句,当前置条件满足且完全执行方法后,它为真。对于一个值方法,后置条件将描述方法返回的值。对于一个void方法,后置条件描述所做的动作及对调用对象的任何修改。一般地,后置条件描述方法调用产生的所有影响。考虑后置条件可以有助于弄清楚方法的目的。

注意:不能满足后置条件的方法,即使符合前置条件,也可以抛出异常。


前置条件意味着职责,要保证必须满足特定条件。如果在调用方法前由客户负责满足条件,则方法不必检查条件。或者,如果方法负责让条件成立,则客户不必检查它们。例如,要规范说明一个求平方根的方法,可以在方法头前面写如下的注释:


/** Computes the square root of a number.

@param x A real number >= 0.

@return The square root of x.

*/


这个注释表明,方法假定客户要提供一个非负数作为参数。


更安全的技术是让方法承担检查参数的责任。例如它的注释应该如下:


/** Computes the square root of a number.

@param x A real number.

@return The square root of x if x >= 0.

@throws ArithmeticException if x < 0.

*/


虽然在前面的注释中我们将前置条件和后置条件集成在一起,不过也可以将它们单独分开。


程序设计技巧:在方法头之前的注释中充分说明每个公有方法。对于确保方法能正确执行而必须满足的条件,要说明是由方法还是由客户来负责进行检查。以这种方式,既做了检查又不会重复检查。但在调试过程中,方法应该检查前置条件是否满足。


当使用继承和多态来重写父类中的一个方法时,子类中的方法可能会出现与父类中的方法不一致的问题。前置条件和后置条件可以帮助程序员避免这个问题。后置条件必须适用于子类中方法的所有版本。重写的方法可以添加到后置条件中——即它能做的更多——但不能做的更少。不过重写的方法不能增加其前置条件。换句话说,它不能比基类中的方法要求得更多。


《横扫offer---程序员招聘真题详解700题》,开点工作室著,清华大学出版社出版,天猫、京东等各大网上书店及实体书店均已开始发售。


全部评论
妈妈再也不用担心网上到处找面试知识点了。。 哈哈。。你值得拥有。 http://v3l.cn/Ds8XPRR
点赞 回复 分享
发布于 2016-09-16 23:39

相关推荐

点赞 评论 收藏
分享
03-30 19:30
石家庄学院 Java
野蛮的柯基在游泳:都能入股了,还得是Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务