【问题标题】:Why is 'smoke and mirrors' an anti-pattern?为什么“烟雾和镜子”是一种反模式?
【发布时间】:2011-02-26 06:23:56
【问题描述】:

我最近在阅读 Wikpedia's list of Anti-Patterns 并注意到其中包括:

烟雾和镜子:演示如何 会出现未实现的函数

为什么这是一件坏事?我唯一能看到的是,如果你从来没有真正开始实现上述功能。如果功能在正式规范中,“保证”完成呢?为了向潜在客户展示他们的能力,这样做还是不好吗?

【问题讨论】:

  • +1 这是一种不做的技术,而是开发技术。我同意你的看法,这实际上不是反模式。这是一种反士气

标签: design-patterns language-agnostic anti-patterns


【解决方案1】:

要了解为什么烟雾和镜子会成为反模式,请查看Smoke and Mirrors Wikipedia 条目。来自文章:

烟雾和镜子是一个隐喻 欺骗性、欺诈性或非实质性的 解释或说明。来源 这个名字是基于魔术师的 魔术师制造的幻觉 物体出现或消失 中间伸缩镜子 一阵混乱的烟雾。这 表达可能有一个内涵 携带的技巧或聪明 出这样的骗局。

在计算机编程领域, 它用于描述程序或 尚不存在的功能, 但似乎确实如此(cf. 汽化器)。这通常是为了 展示一个结果项目 将在代码之后运行/看起来像 是完整的——在贸易展上,对于 例子。

更一般地说,“烟雾和镜子” 可以指任何类型的演示文稿 观众的目的是 被欺骗,例如企图 欺骗潜在客户 认为一个人有能力 交付产品所必需的 问题。

通常情况下,为了获得/保持资金,使用烟雾和镜子来给管理层或客户留下深刻印象,但实际上并没有真正的代码。这在一段时间内有效,但最终会导致其他反模式(意大利面条代码、blob 等),以便在实际请求时尝试获得真实的东西。

以烟雾和镜子开始的项目往往以可怕的方式结束。就像关系一样,如果你在谎言上开发代码,最终一切都会分崩离析。

【讨论】:

  • +1 用于比较编程和关系。只是不要认为您可以在关系中“从头开始为下一个版本重新编写”,否则您的子进程会很好地分叉。 :(
  • +1 我认为第一句话涵盖了所有内容:Smoke and mirrors 是对欺骗性、欺诈性或非实质性解释或描述的隐喻。 这与什么是模拟不同-up 应该是 -- 预期的行为/用例,有时可能有点野心勃勃,但不是欺诈或欺骗性销售。
  • 照镜子至少是骗人的,仍然需要您开发使用paint.exe绘制屏幕所显示的内容。您可能会发现实现实际功能会遇到问题......并且客户知道您已经开始使用它并且看起来与他们拥有的图片完全一样。
【解决方案2】:

烟雾和镜子似乎与模型不同。

如果实现类似计算器的东西,你可以编写加、减、乘和除的所有方法,但更高级的函数都返回随机的,似乎可以完成这项工作。管理人员在长长的数字字符串中发出呜呜声。

【讨论】:

【解决方案3】:

虽然许多答案暗示了(在我看来)真正的问题,但没有人真正直接给出。

“烟雾和镜子”是一种反模式的真正原因是它混淆了原型和成品之间的区别。创建原型非常好。我们许多人(大多数?)遇到的主要问题之一是经理说“好吧,这似乎工作得很好,让我们发布吧。”

创建原型通常是一件好事——但是您必须始终非常小心,无论是内部还是(尤其是)外部世界,以明确它是 原型,而不是成品。管理层通常希望相信原型无论如何都是成品(或至少可以形成一个产品的基础)。鼓励这种信念是一件非常糟糕的事情。

【讨论】:

    【解决方案4】:

    因为很多时候,90% 的营销、10% 的管理和 0% 的开发。

    承诺不足,交付过多。反之亦然。

    【讨论】:

    • 不幸的是,在现实世界中,您很少能一直这样做(除非您的管理层了解软件——这在非软件行业并不常见)。在这种情况下,如果你按照你的建议去做,你最终将得不到资金,所以你实际上可以做你想做的事。真正的诀窍是向管理层展示你正在做什么(让它成为“闪光”)并继续在幕后做真正的工作。为他们拼出结果,以便他们理解。 (这对任何销售策略都有好处。)
    • 这只是一种反模式,因为它经常适得其反。当你告诉他们什么存在而什么不存在时,“阻碍你的东西”出现,而且它出现,你就会被客户和管理层困在寻找责任的人。 ..就像那个说它存在但实际上并不存在的人一样......
    【解决方案5】:

    如果您点击Smoke and Mirrors 的链接,您会看到这个 sn-p:

    在计算机编程领域,它用于描述尚不存在但看起来好像存在的程序或功能(参见vaporware)。这样做通常是为了演示代码完成后最终项目的功能/外观 - 例如在贸易展览会上。

    这很危险,因为在我们的世界里,任何事情都可能改变。

    【讨论】:

    • 改变还不错。不存在是。
    • +1 因为它的角度与我投票赞成的其他答案略有不同。但是,我更喜欢“欺诈性和欺骗性”这个更强的术语:-)
    • 根据我的经验,变化通常是不存在的原因。当一个被推销为“有史以来最伟大的东西”的模型变化太大时,“欺诈性和欺骗性”可能成为描述该项目的关键形容词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多