栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

软件构造学习笔记(五)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软件构造学习笔记(五)

1.快照图

快照图是一个很好用的抽象,用于描述程序运行时的内部状态,是runtime-moment-code层面的体现,方便程序员之间的交流,刻画各类变量随着时间变化,解释设计思路。

基本类型的值直接书写,对象类型用椭圆圈起来进行书写,不可变对象用双椭圆,不可变引用用双线箭头。

2.复杂数据结构

(1)数组(Array)

定长数组,初始化分配内存空间,难以确定需要使用到的长度。

变长数组(Java:List)可以动态的进行扩展。List接口定义变量,实例化指定具体实现(如ArrayList)。

List保存的是一个Object而不能是一个基本数据类型。

List遍历可以采用普通的循环遍历也可以采用for(L x : list)进行简单遍历,这种遍历方式不关心数组元素的具体位置。也可以用迭代器器遍历(Iteration)。

(2)集合(Set),无序且没有重复。Set也是一个抽象接口,实例化指定具体实现。

(3)图(Map),表示(key)-值(value)。Map同样是一个接口。

这些数据类型都相当于一个容器,可以在里面放数据,但是只可以同时放相同的数据类型。可以保证取出值是指定类型。静态检查可以发现相关的问题。

关于Java接口:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

迭代器(iterator):是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。

在使用迭代器时改变数据时可能会出先错误结果,比如删除元素时迭代器下标继续遍历而数组中元素下标却改变了。这种问题可以通过使用迭代器的方法进行删除而不是使用数据结构的方法删除元素。

3.有用的不可变数据类型

基本数据类型的封装类型都是不可变的。可以将一些可变数据类型进行包装成不可变类型,可变的操作会将其屏蔽,但是这种不可变是运行阶段才会获得,编译时无法检查出改变数据的操作的错误。

五.设计规约(specification)

方法:方法是为了达成某个目标所用的方式和办法。方式就是选择的途径,办法就是采取的措施。

方法的规约在方法的实现体上方。

规约的作用:

一个软件的代码本身就蕴含了设计者的设计决策,但是这是远远不够的,一是不够直观,难以从代码中提取设计决策信息;二是设计者本身也记不住。于是就需要规约来作为软件的“法律”,有了规约之后,在编写程序时就有据可依,知道应该实现什么样的功能,可以实时检查代码写的符不符合功能需求。规约约定了责任范围,写代码的人要负责的责任都写在规约中,清晰且容易定位错误,方便管理,这就能够一定程度避免因对功能的误解而造成的bug。除此之外,在客户端client使用某个方法时,不需要去费劲地读代码理解代码细节,只需要理解规约就可以了。这还意味着规约扮演着隔离者的角色,方法中具体实现过程的变化无需通知客户端或其他调用者,可以提高代码迭代的效率。
规约的细节:

规约内容有方法的签名,方法的功能,方法的输入参数和返回值,性能。规约作为一个防火墙的作用,将客户端与实现者隔开。不具体体现实现方法。

行为等价性:两个方法是否可以相互替换。

判断两个函数是否等价是站在客户端的角度来看函数行为是否相同。单纯的代码判断不足以判断等价,需要对代码的规约进行判断。

规约的构成:

1.前置条件(@param):对客户端的要求,使用方法需要满足的条件,输入数据一种前置条件。

2.后置条件(@return):开发者约束,方法结束时的返回,可以是正确返回也可以是错误返回。

返回异常是一种良好的习惯,可以通过返回提示快速找到bug并修复。

静态类型声明是一种规约,方法前的注释同样是规约。在java中注释开头两个星号,结束一个星号会视为规约,java会检查规约内容并使用工具提取文档。

通过返回值可以知道一个方法是否是不可变的。

除非后置条件声明,否则不应该修改输入的参数。

规约替换:强度高的规约可以替代强度低的规约。

规约强度:前置条件更弱或相等,后置条件更强或等于。则此规约拥有更强的规约强度。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/967041.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号