代码不朽的读书笔记——软件的可维护性

news/2024/11/23 9:52:05/

软件的可维护性 

软件维护的四种类型
纠正性维护 : 这是改BUG 
适应性维护 : 这是更换操作系统与数据库等外部环境时的修改
完善性维护 : 这是有新需求的修改
预防性维护 : 确定可以改进质量或者是预防未来出现的BUG的修改

1. 坚持简单的原则最有助于提高可维护性.
2. 可维护性不是项目开发完成后才去考虑的,而应该是在项目开发的一开始就加以考虑.
每个人的贡献都应当计算在内.
3.各个原则的影响不同

可维护性与编程语言无关,与行业无关,也不等价于BUG数量的多少.

可维护性表示高效,有效地进行修改的程度.

可维护性的原则有
1. 编写短小的代码单元
2. 编写简单的代码单元
3. 不写重复代码
4. 保持代码单元的接口简单
5. 分离模块之间的关注点
6. 架构组件的松耦合
7. 保持架构组件之间的平衡
8. 保持小规模的代码库
9. 自动化开发部署与测试
10.编写简洁的代码


1. 要求不超过15行代码
2. 分支点不超过4个
3. 不要复制代码
4. 参数不超过4个
5. 模块中所有的方法被调用的总次数尽可能少于10次.
6. 含有传入调用与透传调用的模块的数量和 与总模块数的比例值小于14.2%
7. 顶层系统组件数接近9, 组件大小的修正基尼系数应该不超过0.71
8.代码库重建成本不超过20人年,C#的代码应该是不超过175000行.


SIG2015年的四星级可维护性标准
方法中代码长度      4星代码单元允许的百分比
大于60行            最多6.9%
大于30行            最多22.3%
大于15行            最多43.7%
小于15行            最少56.3%

方法中代码复杂度    4星代码单元复杂度允许的百分比
McCabe大于25            最多1.5%
McCabe大于10            最多10.0%
McCabe大于5             最多25.2%
McCabe小于5             最少74.8%


重复代码四星评级
代码分类           允许评为4星的行数百分比
非多余的           至少95.4%
多余的             最多4.6%

代码单元接口程度
参数个数           允许评为4星的百分比
大于等于7个         最多0.7%
大于等于5个         最多2.7%
大于等于3个         最多13.8%
小于等于2个         至少86.2%

模块中所有的方法被调用的总次数   允许评为4星的百分比
51+                               最多6.6% 
21-50                             最多13.8%
11-20                             最多21.6%
1-10                              无限制

组件独立性
含有传入调用与透传调用的模块的数量和 与总模块数的比例值小于14.2%

组件平衡性
顶层系统组件数接近9, 组件大小的修正基尼系数应该不超过0.71

代码库体积
175000行以下


http://www.ppmy.cn/news/51206.html

相关文章

centos7操作yum命令失败

前言设置网卡开机自动启动设置国内dns服务器系统修改CentOS-Base.repo中的地址 前言 刚安装完的CentOS7的系统,发现无法使用yum命令进行更新,在更新的时候会出现下面这种内容,为此问题有以下这些解决方案可以尝试。 One of the configured r…

Android之 颜色选择器

一,简介 1.1 计算机的颜色通常有两种表示方式: 光源模式RGB(Red红, Green绿, Blue蓝),数值0-255 印刷模式CMYK(Cyan青, Magenta品红, Yellow黄, Black黑),数值1-100 任何颜色都是由RGB或CMYK混合出来的,再加上透明度…

C++基础知识-2

本期我们接着来讲C的基础知识,没有看过的朋友可以先看看上一期 (16条消息) C基础知识-----命名空间_KLZUQ的博客-CSDN博客 目录 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字(C11) 9. 基于范围的for循环(C11) 10.指针空值nul…

WPF教程(七)--依赖属性(3)--附加属性

一、 只读依赖属性 以前在对于非WPF的功能来说,对于类的属性的封装中,经常会对那些希望暴露给外界只读操作的字段封装成只读属性,同样在WPF中也提供了只读属性的概念,如一些 WPF控件的依赖属性是只读的,它们经常用于报…

安卓Socket客户端(及刷新页面)

前言:最近学习了一波java语言和基础安卓开发,综合运用写一段安卓Socket客户端,实现控制小车的前进、后退、左转、右转,具体实现代码记录在下面代码 一、安卓Socket客户端 MainActivity.java package com.example.zyf;import java.io.IOException; import java.io.Output…

Python requests模块:发送HTTP请求和处理响应

目录 前言一、requests模块二、requests携带参数的方式三、get请求URL解码编码四、post请求携带数据编码格式五、get请求携带请求头六、post请求携带参数七、requests.session的使用(可以不用带cookie)八、requests模块其他参数九、response对象十、最后 前言 爬虫是什么&…

026:Mapbox GL加载矢量切片数据源

第026个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载矢量切片数据源。将矢量源添加到地图。使用其 tileset URL(mapbox:// + tileset ID)添加任何 Mapbox 托管的 tileset。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例…

ABAP常用系统变量 (SY-)及SY-SUBRC

abap系统变量在syst结构里面可以找到 SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,0表示成功 SY-DBLNT: 被处理过的记录的笔数 SY-UNAME: 当前使用者登入SAP的USERNAME SY-DATUM: 当前系统日期 SY-UZEIT: 当前系统时间 SY-TCODE: 当前执行程序的Transaction code …