怎样才算是好的软件可维护性设计?
软件的设计要考虑很多因素,可维护性是很重要的,一般软件都有一个生命周期。软件的特点就是应变性比较差,很多设计模式就是为系统带来了更好的可维护性。
OO设计中有一个很有名的open/close原则,这个名字取的比较怪和费解,实际上它的意思是扩展软件功能的时候不修改和影响已有的功能。软件忌讳的是像全局变量那样牵一发而动全身的东西。
最近,松耦合空间的温先生提出了良性依赖原则(http://lcspace.nease.net/dvp-agile/agileood.html),认为应该避免容易变化的东西。这个自然不错,不过我觉得软件最忌讳的不是变化,而是扩散性的变化,也就是重构一书里说的散弹式攻击。具体的对策就是封装变化,减小变化的部分对系统的冲击。
所以一个好的可维护性设计就是有预见地封装了变化的设计。像防火墙一样挡住变化之火。
OO设计中有一个很有名的open/close原则,这个名字取的比较怪和费解,实际上它的意思是扩展软件功能的时候不修改和影响已有的功能。软件忌讳的是像全局变量那样牵一发而动全身的东西。
最近,松耦合空间的温先生提出了良性依赖原则(http://lcspace.nease.net/dvp-agile/agileood.html),认为应该避免容易变化的东西。这个自然不错,不过我觉得软件最忌讳的不是变化,而是扩散性的变化,也就是重构一书里说的散弹式攻击。具体的对策就是封装变化,减小变化的部分对系统的冲击。
所以一个好的可维护性设计就是有预见地封装了变化的设计。像防火墙一样挡住变化之火。