当前位置: 首页 > 科技观察

软件开发中的“瑞士军刀综合症”

时间:2023-03-22 11:16:50 科技观察

如果您认为这篇文章更像是一个巨魔,我提前道歉。“瑞士军刀综合症”的想法源于我对项目经理、客户,甚至其他开发人员以狭隘、怪异的方式思考的挫败感。我称之为“瑞士军刀综合症”。“瑞士军刀”一词通常用于描述可在各种情况下使用的工具集合。虽然这样的组合可能有用,但也有一些风险需要注意。具有太多活动部件的工具最终可能会完全无用!一个可以做任何事情的工具是一个不会做错任何事的工具。根据我的经验,软件也会出现同样的问题。大多数时候,开发人员只是因为“这很酷!”而将一些功能或一段代码放入项目中;项目经理会认为这个或那个特性可以增加价值,并在项目中期修改需求;听到或看到某个功能对他们来说是“至关重要的”,并期望获得额外的功能或特性。这种“瑞士军刀综合症”可以表现为多种形式:需求范围蔓延、过早优化等。但问题的根源在于我们如何理解和判断软件、工作负载及其附加值的价值:更多的特性=更多的价值在现实,而且在大多数情况下,情况恰恰相反。一段代码或一个软件越复杂,它提供的价值就越少。一个个人示例简化了这个概念,即DemacMedia内部使用的集线器控制台。该应用程序应该很简单:我们需要一种方法来(1)查看分配给组的所有任务和(2)按本周或两周的底线过滤任务-简单地说,一个带过滤功能的任务聚合器。我花了一个星期的时间来编写基本功能。当我在下周一将其展示给我们团队的项目经理时,他认为该应用程序很好用。“......但如果......会更好。”于是瑞士军刀综合症开始了:该工具与另一个团队共享。我们收到了一堆需要在上线之前添加的新功能。突然之间,我们的要求比应用程序最初设计的要多得多。有目的的软件应该简洁,只提供它应该提供的东西。一段优秀的代码要想配得上上面这把军刀,就应该像一把厨师刀。一把菜刀很简单,但有特定的功能。专业的厨师会在不同的情况下使用不同的刀具。同样的思维方式也应该应用于代码。只做一件事,并把它做好。我们在软件设计中发现了相同的原则,通常称为单一功能原则:...单一功能原则指出每个类都应该有一个单一的功能,并且该功能应该被类完全封装。它的所有服务都应与此功能密切相关。总结任何公司、项目经理、开发人员或客户都应该遵循这个逻辑。我们倾向于认为拥有更多或取得更多等同于变得更好和更有价值。软件应该是优雅的,优雅的代码就是简洁地完成需求的代码。因此,作为开发人员,我们有责任确保我们编写的每一段代码都尽可能优雅和简洁。特别鸣谢:MarkHolmes–http://markholmes.io/原文链接:coderoncode翻译:伯乐在线-TonyRideBike翻译链接:http://blog.jobbole.com/68694/