5-1 可维护性的度量和构造原则
1、软件维护
修复错误、改善性能。
修改后要进行回归测试,确保没有引入新的故障。
2、可维护性的度量
圈/环复杂度:独立路径的数量、代码行数、可维护性指数MI、继承的层次数、类之间的耦合度、单元测试的覆盖度
3、模块化设计
高内聚低耦合、分离关注点、信息隐藏。
五个标准:1、可分解性,将问题分解成小问题;2、可组合性;3、可理解性;4、可持续性,发生变化时产生的影响较小;5、保护性,异常、错误的影响小。
五个方法:1、直接映射;2、尽量少的接口;3、尽量小的接口,两个模块交换较少的信息;4、明显的接口;5、信息隐藏。
高内聚低耦合:模块间接口数量少、模块间接口复杂性低。
4、SOLID
SRP(单一责任原则):一个类,一个责任。违反SRP的例子:
OCP(开放/封闭原则):对扩展性开放,对修改内部代码封闭。一个可行的方法是利用抽象,即客户端依赖接口,若要修改功能,在接口上派生子类。
错误示例:如若增加功能,需要改if-else结构。
修改:
ISP(接口隔离原则):使用较小的接口,不同的接口面向不同的客户端提供服务,不要让很多客户端都依赖于一个接口,这样会有很多客户端不需要的方法。
例子:
DIP(依赖转置原则):高层模块不依赖于低层模块,都依赖于抽象(接口);抽象不依赖于实现细节,而是实现细节依赖于抽象。
例子,下图中,黄线上方的部分,是客户端直接调用底层具体类,黄线下方的部分,客户端依赖于抽象接口,而不直接依赖于具体类:
总结:面向对象的两大武器:抽象(使用接口)和分离(使用小接口)。
5、GRASP
GRASP是关于如何为“类”和“对象”指派“职责”的一系列原则
5-1 可维护性的度量和构造原则相关推荐
- 第六章代码的可维护性——可维护性的度量和构造原则
1.软件的维护与演化 我们一直说软件维护,那么什么是软件维护呢?其实就是修改错误.改善性能的过程.运维是软件开发中最困难的工作之一,他需要处理各种来自用户报告的问题与故障. 软件维护主要针对一下几种( ...
- 软件构造学习笔记-第九周、第十周
因为本周五开始五一假期,所以只有一节软件构造课.因为内容还属于创建模式.结构模式.行为模式.将该堂课的内容整合到本博客中.本周的重点是程序开发模式,在写代码之前首先充分考虑采用哪种模式更有利于开发.维 ...
- Review of Software Construction
ソフトウェア構築の復習 @1.0 ver. 文章目录 ソフトウェア構築の復習 @1.0 ver. @[toc] 第一章 第一节 软件构造的多维视图 Buildtime概述 Runtime概述 第二节 ...
- 【哈工大软件构造】学习笔记10 第十章、第十一章、第十二章
目录 第十章 面向可维护性的构造技术 1 软件维护和演化 2 可维护性的度量 3 模块化设计和模块性准则 模块划分的五个准则 模块设计的五个原则 耦合度和聚合度 4 OO设计准则:SOLID SRP ...
- 原则,策略,规范也是构架的一部分
原则,作为大的方向,影响到构架的设计和实现 运行效率和开发效率优先级, 可读性和开发效率 安全性 稳定性 负载量 团队开发 沟通原则 确定原则就是确定一个总体的方向,当一些可选项发生冲突的时候,就可以 ...
- 《设计模式之禅》之——六大设计原则解读
一.单一职责原则(Single Responsibility Principle,SRP) 1. 单一职责原则定义 应该有且仅有一个原因引起类的变更. 2. 单一职责原则好处 类的复杂性降低,实现什么 ...
- 设计模式01-七大设计原则
设计模式01-七大设计原则 文章目录 设计模式01-七大设计原则 开闭原则-Open Close 依赖倒置原则-Dependence Inversion 单一职责原则-Simple ResponsiB ...
- OO六大设计原则最全分析总结篇
文章目录 1. 单一职责原则(SRP) 2. 开放封闭原则(OCP) 3. 里氏替换原则(LSP) 4. 依赖倒置原则(DIP) 5. 接口隔离原则(ISP) 6. 迪米特法则(LOD) 面向对象(O ...
- (2019春)软件构造:雨课堂试卷(第6章)
目录 6-1 可维护性 单选题 第1题 1分 多选题 第2题 2分 多选题 第3题 2分 单选题 第4题 2分 单选题 第5题 1分 单选题 第6题 1分 6-2 面向可维护性的设计模式 单选题 第1 ...
最新文章
- 准确率(Precision)、召回率(Recall)以及综合评价指标(F1-Measure )
- 将已有项目提交到github/从github上pull到本地
- 如何开始企业网站的需求分析?
- 计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)
- 字典树 ZOJ1109 HDU1251 PKU1204 HDU1075
- cortex a7 a53_小号“A7”终于亮相,配4米9车长 大溜背!堪称15万内最强颜值!
- UESTC学位论文latex模板下载
- 【转】浅谈React、Flux 与 Redux
- MongoDB学习总结(五) —— 安全认证
- Linux 重定向与连接符详解
- android app定时自动重启,android 应用程序自动重启
- 阿里云图标icon使用symbol 引用方式
- Apollo课程学习2——高精地图HD Map
- [Unity-经验]从购买云服务器到发布Unity WebGL项目
- python自定义安装选项_Python安装教程详解
- 免费制作字体软件 - FontForge
- Latex 公式 语法 [维基百科]
- linux下gcc编译的四个步骤,linux:gcc编译程序的四个阶段
- HZNUOJ1527
- 基于安卓系统的SM4-SM2/3加解密软件开发报告