HIT软件构造学习笔记-第四章(上)
4.1可复用性的度量,形态和外部表现
本章面向一个重要的外部质量指标–可复用性
越抽象的模块,可复用性就越强
大纲:
源代码级别的复用
模块级别的复用(类/抽象类/接口)
库级别的复用(API/包)
系统级别的复用(框架)
一.可复用性
1.硬件产品是典型可复用性的例子
软件:
(1)面向复用的编程:开发复用的软件
(2)基于复用的编程:利用已有的可复用软件构造新的
2.要求:
(1)降低成本和开发时间
(2)经过充分的测试,可靠,稳定
(3)标准化,在不同的应用中保持一致
上图红色线条为可复用性的开发成本,很好理解
二.如何衡量可复用性
标准:
三.复用的方式和level
*注意:最主要的复用是是在代码层面,但是在软件构造的过程中,任何实体都可以被复用
1.方式:
(1)白盒复用:
源代码可见,可以修改和拓展,本质是通过继承进行复用(对程序员的约束比较多)
(2)黑盒复用:
源代码不可见,不能修改,本质是通过API接口,调用方法(委托)实现复用
2.复用的level:
(1)代码level:
比如网上有一段代码,正好你能用上,你直接copy了,这就是代码level(简称复制粘贴)
(2)模块level:
这是基于类的level,有黑盒白盒两种方法
(3)库文件level:
主导方为程序员
(4)框架level:
有固定的框架,开发者自己填写代码进去,也有黑盒白盒两种方法
四.观察可复用性(原则)
1.类型可变:(泛型)
适用于不同的类型,并且满足LSP原则
2.实现可变:
相当于重写(overriding)
3.功能分组:
把方法细分,并按照具体情况加以组合,实现效率最大化
4.表示独立性:
用户不关心内部,只关心外部方法
5.共性抽取:
将共性的行为抽取出来,形成可复用的实体:父类/抽象类