Rober .C. Martin指出,软件腐化的四个原因

1.过于僵硬(regidity)

表现:很难加入一个新功能,要波及很多模块,起初几天的工作,要很长时间才能实现。

对立面:可扩展性(extensibility),使新的模块更好插入。可以用开闭原则(O),里氏替换原则(L),依赖倒置(I),组合/聚合复用原则保证

2.过于脆弱(fragility)

表现:一个地方的修改,会引起其他的地方出现故障。

对立面:灵活性(flexibility),允许代码修改平稳的发生

3. 复用率低(Immobility)

表现:由于一块代码,很难在新的功能中使用,那么程序员倾向于不碰原来的代码,重新写自己的代码,甚至复制粘贴,然后修改下。

对立面:字面意思---提供复用率,不仅仅是代码的复用,还有

a.算法的复用,比如排序算法

b.数据结构的复用,比如队列,栈,树等这些数据结构都有十分透彻的研究。

4. 粘度过高(viscosity)

表现:开发中,破坏原来设计者的意图,达到更快的开发的目的。即权宜之计,牺牲长期的利益。比如修理收音机时,直接飞线短路,达到某个目的,但是牺牲了原有的设计。

对立面:可插拔性(Pluggability) 。某个有同样接口的类可以很容易替换另一个同样接口的类。

转载于:https://www.cnblogs.com/itquanquan/p/8459580.html

软件系统腐化的四个原因相关推荐

  1. 计算机设备更新理由,电脑硬件明明升级了,为什么速度还这么慢?四种原因在背后作怪!...

    原标题:电脑硬件明明升级了,为什么速度还这么慢?四种原因在背后作怪! 电脑硬件在我们生活中很常见,指的是通过更换更高的硬件或者是加装硬件来提高电脑的性能,在很多朋友的心目中都会有这样的一个误区,就是电 ...

  2. 计算机屏幕出现条纹w7,win7电脑屏幕出现条纹四种原因和解决方法

    在运行Win7旗舰版系统的时候屏幕突然出现条纹,虽然还可以正常操作,但是眼睛看久了会很累,很多人就会担心是不是屏幕坏了.遇到win7电脑屏幕出现条纹问题怎么办呢?首先我们要知道故障原因,然后在对症下药 ...

  3. 服务器显示器蓝屏怎么办,win7系统经常发生显示器蓝屏四种原因和解决方法

    在win7旗舰版系统中,显示器发生蓝屏属于常见问题之一,相信很多用户都有遇到过,最烦恼就是工作到一半数据没有保存就发生蓝屏了.其实造成显示器发生蓝屏的原因有很多种,小编给大家收集总结win7系统经常发 ...

  4. linux无线网卡连接不稳定怎么办,无线网络信号不稳定的四种原因及解决方法

    宽带路由器在一个紧凑的箱子中集成了路由器.防火墙.带宽控制和管理等功能,具备快速转发能力,灵活的网络管理和丰富的网络状态等特点.在使用无线网络过程中,无线网络信号不稳定,忽强忽弱是大家经常遇到的问题, ...

  5. php输入文字不显示,ps写了文字为什么不显示 ps里输入文字不显示的四个原因及解决方法...

    photoshop输入文字不显示,文字看不到怎么办?在使用ps时,经常要输入文字,有时可能会遇到,输入文字会没有显示出来,或是只有一个黑点的情况,这是什么原因造成的?应该如何解决呢?今天,小编为大家带 ...

  6. 四种原因分析和解决笔记本电池充不了电的办法

    笔记本电池充不了电的四种原因分析和解决办法.不少网友会问,笔记本电池充不进电的原因是什么?笔记本电池不充电怎么办?笔记本电池不充电的4种原因分别是电源适配器故障,电池故障,主板故障,电路故障.那么我们 ...

  7. SK电讯进军中国网游的四种原因

    下午看到的消息,韩国SK电讯将战略注资中国网游开发商趣味第一.据消息人士透露,此次SK电讯投资总额为3000万美元,本年度将不低于1000万美金,三年内总额为3000万美金,此笔资金不包括引进网游产品 ...

  8. ERP物料采购系统需求分析与效果展示 ERP实施以失败告终的四个原因分析

    三年前给客户做的一个物料采购系统,客户因为价格问题搁置,今天把它拿出来分享,以分析改善方法. 项目名称: Item Purchasing System /Item Purchasing Request ...

  9. 传奇登录器打不开的四种原因

    最近很多传奇玩家或者GM都遇到了传奇登陆器打不开,没反应,提示无法访问指定设备等问题,导致很多游戏没有办法玩,让玩家心情沮丧,作为GM,那么就更伤心了,很多玩家进不来游戏,开服数千元的成本,差不多都打 ...

最新文章

  1. Tips_发送请求时添加一个随机数参数,让浏览器每次都重新发请求到服务器
  2. CTFshow 命令执行 web45
  3. spring boot logback配置
  4. c# 文件流读写文件
  5. 少儿编程150讲轻松学Scratch(八)-如何设计经典游戏打砖块
  6. %3c php foreach%3e,PHP 数组函数-数组排序
  7. java get null_java 获取对象中为null的字段实例代码
  8. DW —— 简易计算器 (JavaScript)
  9. vSAN ReadyNode™中可以(也不能)更改的内容
  10. 蓝桥杯 ALGO-101 算法训练 图形显示
  11. mysql触发器编程_mysql之触发器trigger详解
  12. Linux meset
  13. 知识付费与内容付费的区别
  14. asp毕业设计——基于asp+access的学生论坛设计与实现(毕业论文+程序源码)——学生论坛
  15. Windows10家庭版获取最高管理员权限
  16. 堆栈的区别linux C,uClinux堆栈
  17. LeetCode-781-森林中的兔子
  18. 记事本html特效,很漂亮的网页飘落特效代码
  19. 汕尾话专用专注微信聊天表情GIF图片
  20. 宽带和下载速度(下载速率)之间的区别

热门文章

  1. vs2013 和 vs2015 产品密钥
  2. webpack 入门_Webpack入门:模块捆绑魔术
  3. 利用itchat写一个聊天机器人
  4. 毕业设计日志(16)
  5. Window10 系统点击点击第三方应用(QQ、微信)中的链接无法跳转设置的默认浏览器(Chrome)
  6. C语言实现快速排序(三种)
  7. Flutter Text 参数详解
  8. Kylin(一)概念介绍
  9. 【性能测试】性能测试方案设计
  10. Win32应用程序是什么