关于SPEC的理解

目录

1.SPEC的必要性

2.SPEC的内容

        2.1方法的目的,作用

        2.2方法的Precondition

        2.3方法的Postcondition

        2.4抛出的异常等

3.如何比较SPEC的强弱

4.一些注意的事项

 5.写SPEC应遵守的一些规则


1.SPEC的必要性

        初学java,从简单的几个类到现在做实验或者项目的几十个类,几十个方法,越发理解到一个

好的SPEC的重要性:解耦合。太多的调用关系,太多的继承委托,如果没有一个规约,后期维护

花费的时间和精力真的让人头大。

2.SPEC的内容

        2.1方法的目的,作用

                尽可能明白地叙述方法是干什么的,客户端可以明白怎么使用,程序员自己修改起来也 

         不至于得重新理解

        2.2方法的Precondition

                @param:对客户端的约束,在使用方法时必须满足的条件(传入的数据类型和域等)

        2.3方法的Postcondition

                @return:对开发者的约束,在方法返回时必须满足的条件
        

        2.4抛出的异常等

                @throws:这个方法中可能抛出的异常(checked and unchecked)

3.如何比较SPEC的强弱

        
        前置条件变弱,后置条件不变,SPEC变强;前置条件不变,后置条件变强,SPEC变强;
前置条件变弱,后置条件变强,SPEC变强;前置条件变强,后置条件也变强则无法比较。
总而言之,对客户端输入数据的要求越低,对开发者的要求越高,SPEC越强。
        

4.一些注意的事项

        (1)如果客户端满足了前置条件,那么开发者必须满足后置条件;如果没有满足前置条件,

开发者可以做任何事

        (2)拥有相同规约的函数具有行为等价性,可以相互替换。方法的功能相同,拥有更强规约

的方法可以替换规约较弱的方法而不会产生功能上的影响

 5.写SPEC应遵守的一些规则

        (1)SPEC描述的功能应该单一、简单、易理解。

        (2)SPEC应该是信息丰富的,不要让客户端产生理解的歧义

        (3)SPEC的强度应该适中,SPEC太强对开发者的要求太高(对于客户端来说是好事),

                 SPEC太弱又对客户端要求太高,(显示不出开发者的水平哈哈)

        (4)在规约里使用抽象类型,可 以给方法的实现体与客户端更大的自由度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值