首页 > 资讯 > 正文
如何防止过度设计
来源:网络 阅读量:


过度设计其实就是用户需要一把杀鸡的刀,而你却设计出了杀牛刀或者电锯。过度设计通常来自于开发者将问题过于复杂化或者是前瞻性欠缺。
 
问题复杂化会引入大量额外的代价,如成本上升,系统缺陷增大、提升维护成本、降低系统性能。而高性能和可维护性都是系统的隐性需求,如果这些没实现好,就属于设计错误。
 
多想三步的可能性,但只多做一步的设计,基本就可以了。多想三步,就要多做三步,就是过度设计,因为越面向未来的设计,越没有依据,你还没做完,产品改需求了。
 
一个经验不足的程序员如果太过关注设计,极有可能导致设计过度。因为经验不足,所以很难理解抽象层次,也就无法正确设计,很多时候只是在绕圈子。
 
真正的过度设计容易出现在规模较大的项目,规模大,所以人员多,如果不尽可能预先设计,容易造成返工,浪费资源。设计的适度依赖于架构师的经验和需求的稳定性,实际上也很难避免过度的设计。
 
对于一两个开发的小项目,谈论过度设计则有点奇怪,因为在这种情况下导出好设计的唯一手段就是重构。新手想要不经过反复修改,而一次性解决问题,实际上是在给自己找麻烦。即使大规模的项目,如果能够在前期控制参与人员,在小范围内实现核心功能,并通过重构改良设计,然后再增加人员进行全面开发,也会是一个很好的实践!
 
避免过度设计的最佳方法就是“不要设计的太远”,未了解实际未来,就做出了各种预设和判断,为系统增加了额外的负担。
 
总体来说,最优的设计应该把最可能发生的需求变动和人员变动考虑在内:对付需求变动(所谓代码灵活)至少需要做到代码不重复(单点改动),高聚合(细分功能代码,提倡小对象,短方法),低耦合(隔离变动);对付人员变动则至少需要做到代码易读,符合思维习惯。
 
极限编程鼓励从最简单的解决方式入手再通过不断重构达到更好的结果。这种方法与传统系统开发方式的不同之处在于,它只关注于对当前的需求来进行设计、编码,而不去理会明天、下周或者下个月会出现的需求。
 
正如敏捷开发所倡导的evolutionary Design(演进式设计),小步快跑,迭代开发,将每一次的重构和迭代都映射和更新到最新的设计中来,先有一个框架,再迭代式逐步演进填充,从而更大限度的满足系统的功能性需求和非功能性需求。
 
对自己参与过,并经过实践证实”考虑不周“和”过度设计“的案例多做总结。特别应该注意,不要出现几次了过度设计的失误,就完全走向反面,不做任何设计。
 
多请教有经验的程序员或架构师
 
不论多简单的项目,先做设计,再开工 (避免走向过度设计的反面)


过度设计

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.link66.cn/news/3099.html