我“喜欢”反模式

2025-06-07

我“喜欢”反模式

每个人都在谈论设计模式,但了解这种力量的另一面,就像拜访老朋友一样令人豁然开朗。当然,我并不喜欢创造它们,而是喜欢学习它们。作为开发者,我们总是在努力提升自己,但为了提升自我,我们需要犯错,而有些错误正是我们在职业生涯中常犯的。了解最常见的错误可以帮助我们避免犯错。这里我列出了我最喜欢的五个错误 :)

5 - 大泥球

泥球

这是指缺乏清晰架构的代码片段的一种巧妙方法。我们很多人在刚开始接触一项技术时,都会犯这样的错误:写得一团糟。我记得自己刚开始接触 Android 的时候,会在 Activity 里写很多代码,希望一切顺利。以下是一些 BBM 的症状:

  • 大量重复代码
  • 数据完全去中心化,出现在许多地方,并重复出现多次
  • 该代码看起来已被许多不同的人修补过多次。

最初的术语是由 Brian Foote 和 Joseph Yoder 创造的,其内容如下:

大泥球是一个结构杂乱、蔓延不均、杂乱无章、用胶带和打包线捆扎而成、意大利面条式代码丛林。

通过使用架构或代码中的最低组织级别,可以轻松解决这个问题。

4 - 委员会设计

替代

又名:镀金,让每个人都满意
。镀金是完美主义者的天敌。它意味着即使产品已经准备就绪,也只想添加越来越多的功能。它也意味着在不必要的情况下过于精致或复杂。以下是一些出现这种情况的迹象:

  • 会议耗时过长,感觉无法掌握项目的重要方面:
  • 设计开发比最初计划的成本更高且耗时更多。
  • 过度设计的功能超出了客户的要求范围。

为了确保一切顺利进行:会议的持续时间和对要求的坚持至关重要。

3. 货物崇拜编程

替代

你加入过邪教吗?好玩吗?还是说你大部分时间都不知道那里到底发生了什么?(尴尬表情)

嗯,这基本上就是“货物崇拜”编程。你刚刚听说了一项新技术、流程或工具,即使你对它一无所知,你也只想加入炒作。通常,这种情况发生在我们这个行业的年轻新手身上,但有时经验丰富的开发人员也会加入其中。你身边正在出现一些这样的症状:

  • 仅仅因为技术“流行”而使用它,而不评估实施它的成本
  • 复制粘贴编程

2. 熔岩流

丙氨酸

你知道家里那个堆满杂物的房间吗?或者那些在房间里到处乱放的衣服,如果把它们整理到衣柜里会更好?这些都是你自己的熔岩流 :)

熔岩流(Lava flow)就是那种在我们项目中被随意移动的代码,仅仅因为我们不想考虑移除它需要做多少工作。你知道它没用、丑陋,而且可能有很多 bug。但处理它的压力会让你打消从项目中剥离它的念头。有时它甚至不是你写的代码,你 99% 确定它不会在任何地方使用。但就是这 1% 的把握让你不敢清理它。

您的项目中存在此类情况的一些症状是:

  • 代码中有一部分是没人喜欢去的。
  • 一些代码看起来很重要并且“可能”会在其他地方使用。
  • 您将代码的某些部分称为“ (插入前一位同事的名字)编写的那部分,它可能有某种用途,可能...... (尴尬的停顿)

1 - 复制并粘贴编程

Alt

我们都做过这样的事(现在还在做),我并不是说从其他来源复制粘贴是错误的。代码复用是我们这个行业的核心主题和基础。我们不可能每次需要给应用添加新功能时都重新发明轮子。世界如此广阔,很多东西都已经被尝试、测试和完成,那么为什么不复用现有的呢?

当我们过度使用或不假思索地去做某件事时,问题就会出现。复制粘贴解决方案而不分析它们对代码或项目整体架构的影响,必然会引发许多令人头疼的问题。你的项目中可能出现的一些症状如下:

  • 尽管您已在其他地方修复了同一个错误,但您仍会看到它重复出现。
  • 您的代码开始看起来像一块(字面上的)拼凑物。
  • 由于您实际上不知道代码的工作原理,因此某些部分变得晦涩难懂。

追求快速修复而非代码质量的文化会加剧这种反模式。一个简单的解决方法是创建一种鼓励分析而非速度的代码复用文化。

这里的大部分模式都在这里进行了深入讨论
,就是这样,我希望你们喜欢阅读:)

文章来源:https://dev.to/levimoreira/i-love-anti-patterns-1bj1
PREV
Go 语言、变量和类型的历史
NEXT
中止获取请求 为什么我们需要中止请求? 如何中止获取请求 总结