【总结】Obj & Spec

SPEC

Object

  1. 属性/数据

    1. 可变的
    2. 不可变的
  2. 方法

    1. Spec
    2. 实现

Spec:

  • 定义: 双方的“合同”/”防火墙“(外部不可见)
  • 基本结构:
    • 前置条件(对参数的约束,对客户端的约束)
    • 后置条件(对返回值的约束,对开发者的约束)
  • 原则:

    ​ 前置满足---->后置必须满足 前置满足—>?(fail fine)

    ​ Spec是给客户端看的,不要把程序内部暴露出来

  • 强度:

stronger(对客户端更加友好/易使用,对开发者要求更高/难设计/实现方式更少):

前置条件更弱 , 后置条件更强(在前置条件一样的情况下)

【注:看PPT的几个例子】

下面情况不可比较强度:

​ 前置变弱 且 前置相同时,后置变弱

​ 当不可比较的时候,两个spec无法替代另一个

​ 当可以比较的时候,可以用stronger的条件代替weaker的条件


Spec 的强度:

A>b:

可以用A取代b

  • preA <= preb更弱的前置条件
    postA>=postb (以b的pre为准)更强的后置条件
  • 更强的spec实现自由度小,难于开发易于使用
  • ven图:更大的圈代表更大的实现自由度,spec强度更低

可以让后置条件减弱:Throw error

参数检查的代价:

代价高: 不实现,写在pre-condition中

代价低:检查,直接在post中抛出异常


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值