重读《JAVA与模式》之二

3.1软件系统的可维护性

一个软件系统设计的可维护性较低,即随着性能要求的变化而"腐烂“的真正原因有四个:过于僵硬、过于脆弱、复用率低、黏度过高。

过于僵硬:牵一发而动全身,无法轻易插入新的功能模块。

过于脆弱:蝴蝶效应,修改一处代码,引起其他地方不可预测的故障

复用率低:轮子和各处牵扯太多,无法复用,导致到处都有新造的轮子

黏度过高:不能保存原始设计意图和原始设计框架,让程序员更倾向于用特例的方式硬插入新代码满足眼前的需求。说明系统的黏度过高。

好的系统设计应有如下性质:可扩展性、灵活性、可插入性

可扩展性:可方便增加新的性能

灵活性:允许代码修改平稳的发生,不会波及其他模块

可插入性:接口化,实现类可方便替换,如零件的标准化

3.2系统的可复用性

复用亦即重用,可提高生产效率、提高软件质量、改善系统的可维护性

传统的复用:代码的拷贝粘贴、算法的复用、数据结构的复用

有的复用可提高可维护性,有的复用破坏了可维护性,因此支持可维护性的复用才是设计的准则

 

 

 

面向对象的复用:从算法和数据结构的层面上升到宏观的商业逻辑的抽象层次上

对可维护性的支持

适当提高可复用性,可提高系统的可扩展性。有赖于:”开-闭“原则,里氏代换原则、依赖倒转原则、组合/聚合复用原则。

适当提高可复用性,可提高系统的灵活性。有赖于”开-闭“原则、迪米特法则、接口隔离原则。

适当提高可复用性,可提高系统的可插入性。有赖于:”开-闭“原则,里氏代换原则、依赖倒转原则、组合/聚合复用原则。

设计原则:
  • ”开-闭“原则 OCP
  • 里氏代换原则 LSP
  • 依赖倒转原则 DIP
  • 接口隔离原则 ISP
  • 组合/聚合复用原则 CARP
  • 迪米特法则 LoD

3.3老子论不武

善为士者不武。好的系统设计师设计好的系统,维护时不需要让人大动干戈

天下有道,走马以粪,天下无道,戎马生于效。好的设计,维护成本低;差的设计,维护人员疲于奔命

转载于:https://my.oschina.net/wbilly/blog/738594

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值