我不是一个天质聪颖的人,对软件设计的理解,基本上无法评自己能力单独领悟出来。只有常常督促自己多买国内外软件专家写的好书,来学习他们在这些方面的发现和总结。靠后天学习来弥补先天不足,也是没有办法中的办法。
终于在2007年看到了<
一个软件设计的可维护性很差,原因在于:过于僵硬、过于脆弱、复用率低、黏度过高。相反,一个好的系统设计应该是可扩展的、灵活的、可插入的。在软件发达国家如美国,一些软件界的高手,在20世纪80~90年代,就陆续提出一些设计原则,这些设计原则是在提高一个系统的可维护性的同时,提高系统的可复用性的指导原则:
1、开闭原则:软件架构应该是对扩展开发,对修改关闭
2、Liskov替换原则:任何基类可以出现的地方,子类一定可以出现
3、依赖倒转原则:要依赖于抽象,不要依赖于实现
4、接口隔离原则:应当为客户提供尽可能小的接口,而不是提供大的接口。
5、组合、聚合复用原则:要尽量使用组合、聚合,而不是继承关系以达到复用的目的。
6、Demeter法则:一个软件实体应该与尽可能少的其他实体发生互相作用。
可以说,<
<
终于今年初看到了英文版<<敏捷软件开发:原则、模式与实践>>, 国外这些大牛就是大牛,在这方面就是理解深刻,实践经验丰富。作者的观点很有点唯物辨证法,就是软件设计开始时,我们如果没有看出抽象的必要,可以先实现一个简单的,当第一次被需求触发而显现出抽象的必要时,我们这时机会就来了,需要很快提取抽象接口,遵循以上设计原则。当然,作者还有很多其它好的思想,这里不一一列举。
认识和理解都需要一个过程,没有理论,我们这些智商一般的人是很难仅仅在项目开发中尽快提高的;同样,光看书不实践,我们也很难真正理解这些别人总结的经验,那将是雾里看花。
丰富经验和软件设计思想以及软件工程思想,对软件开发的重要性真的是如此重要,怪不得我们国家无法开发出大型的高质量的软件来。