SPEC

Designing Specification
Methods: Building Blocks
方法的用户不需要知道方法是如何工作的—称 之为抽象

Java API documentation
API:Application Programming Interface,应用程序编程接口

Documenting Assumptions
定义变量 时声明其类型是一种文档约定(编译器会进行检查以确保正确性
声明变量是final类型的也是一种文档约定

Specifications (or called Contract)
规格说明是团队开发的关键,是分配责任的基础
规格说明是实现者和使用者之间的一种契约,实现者有责 任满足契约,使用者可以信赖契约

Why specifications?
·对两部分代码接口处行为的错误理解
·不是所有实现者把规格说明文档化
·规格说明没有文档化,出错时难以定位问题

优点:
1.准确的规格说明利于确定错误的位置和责任
2.客户端不需要阅读代码,通过说明了解程序

Specification structure: pre-condition and post-condition
– Precondition , 由关键词require表示
– Postcondition , 由关键词 effects 表示
– Exceptional behavior异常行为: 1.前提条件是义务(义务)客户端 2.后置条件是方法实现者的义务

逻辑蕴涵:
·规格说明蕴含了以下逻辑:如果 前置条件满足了,则后置条件必须满足
·反之,如果前置条件不满足,后置条件 则无需满足

Specifications in Java
·前置和后置条件中对类型的声明,将 由编译器进行检查,确保正确性
·其余部分通过注释的形式进行描述,由人来保证正确性

Stronger vs. weaker specs
如何比较 两个规格说明的行为,以决定是否可以进行替换?
要求更少,承诺更多,则spec强度越大
加强后置条件 ,意味着对输出要求更多,实现自由变少
弱化前置条件,实现中 需要处理更多的情况
上述两点使可满足的实现变少(点变少),故规格说明越强,区域越小

无法比较的情况
如果S3既不比S1强也不比S1弱,那么就需要说明。可能会重叠(这样就存在只满足S1、S3和S1和S3的实现),或者是不相交的。在这两种情况下,S1和S3都是不可比拟的

Diagramming specifications
每个 点代表一个实现
在这里插入图片描述
一个规格说明定义了一个区域,其中包含的点为其 实现
一个实现或者满 足规格说明(区域内),或者不满足(区域外)

Precondition or postcondition?
Java API类倾向 于采用后置条件的方式处理,当参数不合适时它们会抛出未检查异常
找到由传递的错误参数引起的bug 更加容易
快速失败是好的决策,使失败点离bug尽可能的近,易于定位

选择前置或后置的关键因素是检 查的代价以及方法的作用范围。
·如仅在类的内部调用,则可以通过仔细检查调用该方法的所有位置来确 保前提条件的满足
·如果是public的方法,则适宜采用后置条件(抛出异常)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值