zoukankan      html  css  js  c++  java
  • 雨课堂知识点总结(九)

     3.2 Specification
    1.两个方法具有“行为等价性(behavior equivalence)”:
    站在客户端的角度看,它们实现相同的功能
    站在客户端的角度看,它们可能展现出不同的性能
    它们具有相同的规约(spec)
    其实是针对同一个spec来说是等价的。若对这个spec进行更改,这两个方法也许就不等价了
    2.关于方法spec的说法:
    程序员针对给定的spec写代码,需做到“若前置条件满足,则后置条件必须要满足”
    前置条件是对client端的约束,后置条件是对开发者的约束
    若客户端传递进来的参数不满足前置条件,则方法可直接退出或随意返回一个结果
    3.在Java的语法中,使用@param表达一个方法的pre-condition,使用@return和@throws表达方式的post-condition
    4.除非在post-condition中明确声明过,否则方法内部代码不应该改变输入参数
    方法的spec描述里不能使用内部代码中的局部变量或该方法所在类的private属性
    若在方法的post-condition中声明“client端不能修改该方法所返回的变量”,不能减少该方法的潜在bug
    若为某方法设计JUnit test case,在任何test case中对该方法的调用必须遵循其pre-condition
    5.如果修改了某个方法的spec使之变弱了,那么可能发生的是:
    client调用该方法的代价变大了,即client需要对调用时传入该方法的参数做更多的检查
    程序员实现该spec的难度降低了,自由度增加了
    如果使用椭圆面积表示spec的强度,那么该方法的椭圆面积增大了
    该spec的实现方式变多了
    6.spec的强度:
    前置越强spec越弱,后置越强spec越强,后置比较需要在相同的前置条件下。若前置后置都更强则无法比较
  • 相关阅读:
    Django复习
    AI-CBV写法
    CHENGDU3-Restful API 接口规范、django-rest-framework框架
    人工智能玩具制作
    POJ 3176 Cow Bowling
    HDU 2044 一只小蜜蜂
    HDU 4662 MU Puzzle
    POJ 3262 Protecting the Flowers
    POJ 1862 Stripies
    POJ 1017 Packets
  • 原文地址:https://www.cnblogs.com/HIT-ryp/p/10564770.html
Copyright © 2011-2022 走看看