可维护性是什么?
修改(改良)一个系统的容易程度
越容易修改,说明可维护性越高
可用于评估一个软件的质量
评估软件质量的8个要点
- 可维护性
- 功能适用性:是否满足需求(侧重功能可用)
- 性能
- 兼容性
- 可用性:是否满足需求(侧重功能易用)
- 可靠性:在给定条件下完成指定功能的能力
- 安全性
- 可移植性
软件维护的4种类型(为什么而维护,维护了什么)
修复错误
因环境变化而要求的修改
因需求的变更(新增)而导致的修改
为提高质量(预防将来可能发生的错误)而进行的修改
为什么可维护性很重要?
可维护性有商业影响
- 高可维护性有助于开发得更快,从而能抢占先机(开发速度太慢还可能会遇到开发出来后,原需求已发生了变化的情况)
可维护性是实现其他质量特性(要点)的因素
- 高可维护性使为了其他质量特性而进行的改动变得容易
提高代码的可维护性的指导方针所基于的3个原则
后面要介绍的10条指导方针是基于这3个原则提出的
3原则
指导方针并不复杂,而且通常越简单的方针能带来越大的收益
从一开始就注重可维护性,不要想着事后补救
开发软件时越遵循指导方针,该软件的可维护性就越高
- 违反不同的指导方针,导致的坏结果的糟糕程度不同
对可维护性的误解
可维护性依赖于具体的编程语言
- 使用A语言做出的软件并不一定比使用B语言做出的软件具有更高的可维护性
可维护性依赖于具体的软件开发领域(嵌入性系统、游戏、常规软件等)
- 本书提供的用于提高可维护性的指导原则适用于所有的软件开发领域
如果一个软件没有错误,则说明它具有高可维护性
- 高可维护性意味着解决错误的过程可以高效(短时间内成功解决)地进行
- 可维护性与有无错误、有多少错误无关
可维护性就是已经解决了错误
- 解析与上一条类似,可维护性指的是能够有效和高效地进行改变的程度
如何评估可维护性?
如何确认一个系统“容易维护”还是“难于维护”?
- 简单的系统容易维护
根据一个系统违反准则的情况(百分之多少的代码量违反了准则),将其可维护性定为5个等级中的1个
- 1:最难维护;5:最易维护
10条可维护性指导方针(概述)
编写简短的代码单元
单元指的是方法或构造函数,下同
简短的单元易被分析、测试、重用
编写简单的代码单元
简单意味着该单元的决策点较少,这使得它更容易被分析和测试
决策点数量计算
- 从1开始计数,遍历代码内容
- 遇到如下关键字或同类词,加1
if、while、repeat、for、and、or - case(switch)语句的每一种情况都加1
通常决策点无法减少,只能将其分散到各子程序中,这样做可以降低同一时间必须关注的复杂度水平,因此是有意义的
不写重复的代码
对于重复的代码,一旦发生改动,需要修改所有的地方。这非常容易引起因为漏改而导致的错误
保持各单元的接口尽可能小
“小”指的是接口中的内容(属性、方法、事件等)少
使单元容易被测试和重用
在模块中分离关注点
一个类可看作一个模块
各个类应有自己的主要功能(关注点),各类间的耦合应松散,这可以使修改更方便,并且能使整个系统更加模块化(结构清晰)
使框架中各组件的耦合是松散的
优点同上
使框架中各组件保持平衡
平衡指的是各组件的规模差不多(不会出现一个组件非常大而另一组件很小的情况,这里的各组件指的是在结构中处于同一级别的组件)
使你的代码库尽可能小
大型系统的维护性比小系统低,因为小系统更容易分析、修改、测试
自动化开发流程和测试
可以对修改的有效性提供即时反馈(如果需要人工的话,则会存在延迟)
写清晰的代码
移除代码中不需要的部分:旧的已不用的代码等,这些内容通过模糊焦点的方式降低了维护效率