怎样才算是好的软件可维护性设计?
软件的设计要考虑很多因素,可维护性是很重要的,一般软件都有一个生命周期。软件的特点就是应变性比较差,很多设计模式就是为系统带来了更好的可维护性。
OO设计中有一个很有名的open/close原则,这个名字取的比较怪和费解,实际上它的意思是扩展软件功能的时候不修改和影响已有的功能。软件忌讳的是像全局变量那样牵一发而动全身的东西。
最近,松耦合空间的温先生提出了良性依赖原则(http://lcspace.nease.net/dvp-agile/agileood.html),认为应该避免容易变化的东西。这个自然不错,不过我觉得软件最忌讳的不是变化,而是扩散性的变化,也就是重构一书里说的散弹式攻击。具体的对策就是封装变化,减小变化的部分对系统的冲击。
所以一个好的可维护性设计就是有预见地封装了变化的设计。像防火墙一样挡住变化之火。
OO设计中有一个很有名的open/close原则,这个名字取的比较怪和费解,实际上它的意思是扩展软件功能的时候不修改和影响已有的功能。软件忌讳的是像全局变量那样牵一发而动全身的东西。
最近,松耦合空间的温先生提出了良性依赖原则(http://lcspace.nease.net/dvp-agile/agileood.html),认为应该避免容易变化的东西。这个自然不错,不过我觉得软件最忌讳的不是变化,而是扩散性的变化,也就是重构一书里说的散弹式攻击。具体的对策就是封装变化,减小变化的部分对系统的冲击。
所以一个好的可维护性设计就是有预见地封装了变化的设计。像防火墙一样挡住变化之火。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架