【软件构造】第三章 第二节 设计规约

本文探讨了编程语言中函数和方法的设计原则,包括方法的规约、文档编写的重要性、行为等价性的概念以及Rep结构等内容。强调了前置条件与后置条件的作用,并讨论了设计良好规约的标准。

1.编程语言中的函数和方法:方法是程序的积木,可悲独立开发、测试、复用

2.Specification:

(1)编程过程中的documentation:

        以Java的API为例,需要记录类的继承关系,具体的子类,类的描述,构造器的总结描述,对所有类的总结描述

        我们需要在编程过程中记录自己的设计决策,便于与其他程序员交流

(2)程序中方法的规约:

        这是程序与客户端之间达成的一致,为双方明确了责任

        规约可以隔离“变化”,无需通知客户端

        首先解耦,因为客户端不需了解具体的实现

(3)行为等价性:一个重要原则,根据规约来判断而不是程序表示

(4)Rep的结构:pre-condition和post-condition

        前置条件是针对客户端的,而后置条件针对程序实现者

        程序中的静态类型声明是一种规约,可通过编译器自动检查;方法前的注释也是一种规约,需要人工判断是否满足

        尽量避免使用mutable的数据类型

        除非后置条件里声明,否则方法内部不应该修改输入的参数

        无法强迫类的实现体和客户端不保存可变变量的“别名”

        避免使用可变的全局变量

(5)*测试(后续会有说明)

3.设计规约

(1)明确规约所需要的内容

        这里引入如何对规约的强度进行判断和比较:前置规约越弱,后置规约越强,则规约越强

        越强的规约,对实现者的责任越重,而对客户端的责任越轻

(2)用图形表示规约

(3)设计好的规约:简单、单一、易理解、不能产生歧义、强度合理、规约中尽量使用抽象数据类(给客户端更多自由)

(4)对于是否使用前置条件取决于:a.check的代价 b.方法的使用范围——如果是private和protected的方法,则不需要


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值