什么是“过度工程”适用于软件? [英] What is "over-engineering" as applied to software?

查看:169
本文介绍了什么是“过度工程”适用于软件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道如何将过度工程一词应用于软件开发是一个好的定义。这个表达似乎在软件设计讨论中经常使用很多,与过度的未来打样结合使用,并且很好地确定一个更精确的定义。

I wonder what would be a good definition of term "over-engineering" as applied to software development. The expression seems to be used a lot during software design discussions often in conjunction with "excessive future-proofing" and it would be nice to nail down a more precise definition.

推荐答案

与大多数答案相反,我不认为目前不需要的功能是过度工程的;或者是最不成问题的形式。

Contrary to most answers, I do not believe that "presently unneeded functionality" is over-engineering; or it is the least problematic form.

像你说的那样,最糟糕的过度工程通常以未来打样和可扩展性的名义承诺 - 并实现了完全相反:

Like you said, the worst kind of over-engineering is usually committed in the name of future-proofing and extensibility - and achieves the exact opposite:


  • 空白层次的抽象最多是不必要的,最糟糕的是限制您对基础API的一种狭隘,低效的使用。

  • 带有指定扩展点的代码,例如通过抽象工厂获取的受保护方法或组件 - 当您必须扩展功能时,这些都不完全是您实际需要的

  • 使所有配置都可以配置为避免硬编码,从而使配置文件中的应用程序逻辑(复杂,容易出错)比源代码更复杂。
  • 过度泛化:开发人员不是实现(技术上无趣的)功能规范,而是构建(技术上有趣的)业务规则引擎,执行规范本身由业务用户提供。最终的结果是一个专有(脚本或域特定)语言的翻译器,通常是非常设计的,没有工具支持,并且很难使用,没有商业用户可以使用它。

事实是,最容易适应新的和不断变化的要求(因此是最具前瞻性和可扩展性)的设计是设计为简单。

The truth is that the design that is most easily adapted to new and changing requirements (and is thus the most future-proof and extensible) is the design that is as simple as possible.

这篇关于什么是“过度工程”适用于软件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆