怎样才算是好的软件可维护性设计?

软件的设计要考虑很多因素,可维护性是很重要的,一般软件都有一个生命周期。软件的特点就是应变性比较差,很多设计模式就是为系统带来了更好的可维护性。

OO设计中有一个很有名的open/close原则,这个名字取的比较怪和费解,实际上它的意思是扩展软件功能的时候不修改和影响已有的功能。软件忌讳的是像全局变量那样牵一发而动全身的东西。

最近,松耦合空间的温先生提出了良性依赖原则(http://lcspace.nease.net/dvp-agile/agileood.html),认为应该避免容易变化的东西。这个自然不错,不过我觉得软件最忌讳的不是变化,而是扩散性的变化,也就是重构一书里说的散弹式攻击。具体的对策就是封装变化,减小变化的部分对系统的冲击。

所以一个好的可维护性设计就是有预见地封装了变化的设计。像防火墙一样挡住变化之火。


分享:practice makes perfect.
0
0
(请您对文章做出评价)
« 上一篇:怎样从招聘广告判断一个公司的好坏?
» 下一篇:转:JDepend:管理代码依赖性
posted @ 2005-03-31 22:10 分享 阅读(3101) 评论(14)  编辑 收藏 所属分类: 设计模式, 软件设计

  回复  引用    
#1楼2005-04-01 09:54 | idior
u have not understand ocp
像防火墙一样挡住变化之火 false too

  回复  引用    
#2楼2005-04-01 09:58 | idior
open to extends
close for modify

have u heard embrace change?

  回复  引用  查看    
#3楼[楼主]2005-04-01 10:18 | chenge      
恕我直言,请不要用这些词来吓唬我,请直接陈述你的观点。
  回复  引用  查看    
#4楼2005-04-01 12:22 | idior      
没有吓唬你啊.

对原来类进行修改是close 对继承是open 这就是为什么叫 ocp 所以名字一点都不费解.

敏捷编程的目的是欢迎变化,怎么能象像防火墙一样挡住变化之火.

可能你的意思是不去修改原有的系统. 不过挡住变化之火感觉把变化看的很可怕, "拥抱变化"这个词你没听过?

  回复  引用  查看    
#5楼[楼主]2005-04-01 12:59 | chenge      
拥抱变化我的理解是接受需求变化的事实,但并不是不对变化采取措施放任自由。几乎所有的设计模式都是针对变化的。

至于OCP我觉得你的解释是不够的。我认为应该从功能角度理解,而不是具体的修改方法。

  回复  引用    
#6楼2005-04-02 11:47 | hieasy
变化是永恒的
  回复  引用    
#7楼2005-09-29 00:52 | Who Cares[未注册用户]
open to extends
close for modify

Grammar mistake?
Should it be "open to extend, close for modifying"? :-)

  回复  引用    
#8楼2006-06-19 09:59 | 虚拟主机[未注册用户]
文章不错,学到了很多东西
  回复  引用    
#9楼2007-03-13 11:33 | 域名注册[未注册用户]
像防火墙一样挡住变化之火
  回复  引用    
#10楼2007-03-13 11:34 | 虚拟主机[未注册用户]
好的,了解哦
  回复  引用    
#11楼2007-03-28 21:27 | fanqingsong[未注册用户]
hehe 受教了!!
  回复  引用    
#12楼2007-04-16 18:42 | 服务器租用[未注册用户]
一个好的可维护性设计就是有预见地封装了变化的设计。像防火墙一样挡住变化之火。
  回复  引用    
#13楼2008-01-02 16:54 | 网上购物[未注册用户]
不错,学习了
  回复  引用    
#14楼2008-11-14 17:08 | hongsheng[未注册用户]
楼主,受教了。
我觉得,可以更具体的谈谈实现手段。
代码生成器、框架、三层架构、框架。