Api 其他人是否觉得简单项目的解决方案往往设计过度?

Api 其他人是否觉得简单项目的解决方案往往设计过度?,api,architecture,Api,Architecture,不知何故,我有一种感觉,许多项目变得过度工程化,因此每一个可能的变更请求都可以得到解决,结果是发生的变更请求很难实现 不知何故,我在目前从事的几乎每一个项目中都有这种感觉。这就像每个人都在想“我们可以在项目中添加哪些很酷的api、框架等来解决这方面和那方面的问题”,而没有评估它是否实用或需要 还有其他人有同样的感受吗?或者这里的社区有什么看法?是的 --MarkusQ我发现,虽然一些拥有“高级”高级管理层的老公司往往对业务代码的创建方式极其严格,但新公司完全缺乏完成工作所用软件的骨干 你描述的问

不知何故,我有一种感觉,许多项目变得过度工程化,因此每一个可能的变更请求都可以得到解决,结果是发生的变更请求很难实现

不知何故,我在目前从事的几乎每一个项目中都有这种感觉。这就像每个人都在想“我们可以在项目中添加哪些很酷的api、框架等来解决这方面和那方面的问题”,而没有评估它是否实用或需要

还有其他人有同样的感受吗?或者这里的社区有什么看法?

是的


--MarkusQ

我发现,虽然一些拥有“高级”高级管理层的老公司往往对业务代码的创建方式极其严格,但新公司完全缺乏完成工作所用软件的骨干

你描述的问题听起来像是人们把问题看得太高,想要找到一种一次性解决问题的方法。从长远来看,创建一个工作工具箱(想想标准库)将帮助他们解决问题


我特别喜欢UNIX的工作方式:几个小的实用程序,它们只做一件事,而且做得非常好。

当然-我认为人们太经常地把“健壮的、模块化的”和“过度工程化的”混淆在一起。

我还没有解决任何实际问题,但我已经读了足够多的人在博客上关于这方面的文章,认为存在问题

被指控有罪。实现三个抽象级别和六个配置文件比实现一个简单的流控制分支更有趣。

在任何项目中,无论大小,过度工程都是一种危险。在编写代码可扩展性时,在编写具有足够通用性和可扩展性的代码以允许将来的开发和具有足够特定性以简化手头任务的代码之间,始终存在一种权衡

每一个“未来钩子”都有一个成本,应该根据这个成本、使用它的概率以及游戏后期重构的成本进行评估。“更通用”并不总是更好


至于使用热门的新框架或API,我认为项目经理应该在这方面采取温和的态度。由于开发是一个快速发展的领域,亲自动手的自我培训是做生意的代价的一部分(但显然应该保持合理)。

我只在Java人身上遇到过这一点:“让我们使用spring!”和hibernate!我也发现了这个很酷的验证包!这个将创建XSLT来创建XML表单来创建javascript!"

当我找到所有的罐子并让它们玩得很好的时候,有几十个类我必须熟悉。然后他们想把所有这些部分都抽象出来!”我们可能会换成spring。或者不使用hibernate,所以我们应该把它们抽象掉。”再添加十几个黑客包装类

当它全部完成时,50行psuedo代码已经变成了数千行使“酷东西”工作的代码,大约100行业务逻辑被困在它毛茸茸的、黑客的、充满bug的地狱中

我自己也为此感到内疚,但那只是因为我很无聊,有时间消磨时间。

我想:

每个周期的诀窍是战斗 复杂性,因此增长可以保持 走吧但你不能把它挡在外面, 工程师喜欢复杂性,而不仅仅是 因为它为他们提供了工作保障, 也因为他们真的很喜欢。 但是一旦堆栈变得太神秘, 下一代人举手 站起来说:“我们不打算交易 因为那一团糟。”


这里要记住的关键是时间。一个“简单”的项目,如果在第一天被Excel电子表格或网页淘汰,它的受众和范围就会迅速扩大,成为一个不可持续的怪物

工程化也是一种危险。世界上到处都是“务实”的人,他们会嘲笑任何与他们观点相反的努力。没有人记得一年后,当“简单”的解决方案无法持续时,谁会不同意


诀窍是平衡正确的工程程度,并能够在事情发生变化时进行调整。

我已经被我快速组合起来的应用程序咬了太多次,这些应用程序后来变得“至关重要”“应用程序。然后我几乎要重写那该死的东西。我现在只是假设它会变得至关重要,所以我第一次“写对了”。从长远来看,节省了我的时间和精力。奇怪的是,这与懒惰有关。

绝对如此。但不仅仅是开发人员,还有用户。“我想要这个和那个,以及其他,以改善沟通和提高生产力!”


我很惊讶我们通过在文件服务器上放置一个共享文件夹就解决了这么多此类项目

我认为这是一个问题,但没有看上去那么严重,而且有很好的理由

问题是,大多数设计不足的项目都会很快夭折,而设计过度的项目却能生存下来。所以,当你们看一个还活着的项目时,存在生存偏差


而且,即使你是一个优秀的架构师,目标是“足够好”,如果怀疑你会使用更灵活、更可扩展的。。。(即过度设计的)解决方案。因为如果您不满足要求(不管是什么要求),那么故障模式通常比超出要求时发生的情况要糟糕得多

正如其他人所说,我有太多的“小”项目变成了大项目,走的捷径变成了油漆

有一个快速而肮脏的解决方案,在尝试遵循雅格尼咒语的过程中,我创建了没有工程的简单应用程序

尽管如此,如果不在较小的系统上进行实践,您将无法跳入百万线系统并开发“精心设计”的系统

我已经习惯于在所有项目中始终遵循我们公司开发的体系结构