Rober .C. Martin指出,软件腐化的四个原因
1.过于僵硬(regidity)
表现:很难加入一个新功能,要波及很多模块,起初几天的工作,要很长时间才能实现。
对立面:可扩展性(extensibility),使新的模块更好插入。可以用开闭原则(O),里氏替换原则(L),依赖倒置(I),组合/聚合复用原则保证
2.过于脆弱(fragility)
表现:一个地方的修改,会引起其他的地方出现故障。
对立面:灵活性(flexibility),允许代码修改平稳的发生
3. 复用率低(Immobility)
表现:由于一块代码,很难在新的功能中使用,那么程序员倾向于不碰原来的代码,重新写自己的代码,甚至复制粘贴,然后修改下。
对立面:字面意思---提供复用率,不仅仅是代码的复用,还有
a.算法的复用,比如排序算法
b.数据结构的复用,比如队列,栈,树等这些数据结构都有十分透彻的研究。
4. 粘度过高(viscosity)
表现:开发中,破坏原来设计者的意图,达到更快的开发的目的。即权宜之计,牺牲长期的利益。比如修理收音机时,直接飞线短路,达到某个目的,但是牺牲了原有的设计。
对立面:可插拔性(Pluggability) 。某个有同样接口的类可以很容易替换另一个同样接口的类。