软件构造5.1
软件构造5.1
软件维护和演化
修复错误,改善性能
软件的大部分成本来自于维护阶段
在设计开发阶段就要考虑将来的可维护性easy to change
维护指标
maintainability 可维护性
extensibility 可扩展性
flexibility 灵活性
adaptability 可适应性
manageability 可管理性
supportability 支持性
模块化设计与模块化原则
模块化编程
高内聚,低耦合
- 评价标准
- 可分解性
- 可组合性
- 可理解性
- 可持续性 发生变化时受影响范围最小
- 出现异常之后的保护 出现异常后受影响的范围最小
- 模块化设计规则
- 直接映射
- 尽可能少的接口
- 尽可能小的接口
- 显示接口
- 信息隐藏
- 松耦合和高内聚
耦合:测量模块之间的依赖程度
内聚:测量一个模块的功能之间得紧密性
OO设计原则 SOLID
SRP 单一责任原则
不应该有多于一个原因让你的ADT发生变化,否则就拆分开
一个类,一个责任
OCP 开放/封闭原则
- 对扩展性的开放
- 模块的行为可扩展,从而该模块可表现出新的行为以满足需求的变化
- 对修改的封闭
- 模块自身的代码不应被修改
- 扩展模块行为的一般途径是修改模块的内部实现
- 一个模块不能被修改,那么它通常被认为具有固定的行为
关键的解决方案:抽象技术
LSP liskov替换原则
ISP接口隔离原则
不能强迫客户端依赖于他们不需要的接口,只提供必须的接口
DIP依赖转职原则
抽象的模块不因依赖于具体的模块
具体应依赖于抽象
delegation时候,用interface建立联系
OO设计原则 GRASP
通用责任分配模式,关于如何为类和对象指派职责的一系列原则