过度设计的巨大危害
摘译自SIMÓN MUÑOZ的文章Overengineering can kill your product。
与缺乏良好的开发实践相比,过度设计杀死了更多的产品。
什么是过度工程?
Paweł Głogowski 的定义:
解决您没有的问题的代码或设计。
过度设计的原因
我们试图预测未来 并为未知事物做好准备。 现实情况是,十有八九,“以防万一”永远不会到来。但在此过程中,我们失去了宝贵的时间并增加了项目的复杂性,而这将贯穿其整个生命周期。
过度设计的另一个原因通常是缺乏经验。一般来说,你的资历越高,你就越不容易过度设计,因为你已经经历了很多人为复杂性在你面前爆炸的情况。
松散定义的需求也增加了这个问题。如果工程师没有明确定义的问题,他会倾向于过度设计以保护自己免受不确定性的影响。
过度设计的后果
它增加了我们的开发成本。另一方面,它也会增加您的维护成本。
过度工程示例
基于微服务的架构,它们在 99% 的情况下都不是必需的.
过早优化
如何防止过度设计?
防止过度设计的最好方法是将您的工程师变成真正的产品工程师。
防止过度设计的心理模型
YAGNI - You aren’t gonna need it
KISS - Keep it stupid simple
编者按:感觉有些面向对象的语言例如Java本身就有过度设计的隐喻