为什么'烟雾和镜子'是一种反模式?

时间:2011-02-26 06:23:56

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

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

  烟雾和镜子:展示如何   将出现未实现的功能

为什么这是一件坏事?我唯一能看到的是,如果你真的没有实现所述功能。如果函数在正式规范中,“保证”完成怎么办?为了向潜在客户展示他们有能力做什么,它仍然是不好的吗?

5 个答案:

答案 0 :(得分:6)

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

  烟雾和镜子是一个隐喻   欺骗性的,欺诈性的或非实质性的   解释或描述。来源   该名称是基于魔术师'   魔术师制造的幻想   对象出现或消失   延伸或缩回镜子   混乱的烟雾。该   表达可能有一个内涵   携带的精湛技艺或聪明才智   出于这样的欺骗行为。

     

在计算机编程领域,   它用于描述程序或   功能尚不存在,   但似乎确实如此(参见   雾件)。通常这样做   演示由此产生的项目   将在代码之后运行/看起来像   完成 - 在贸易展览会上,为   示例

     

更一般地说,“烟雾和镜子”   可以指任何形式的陈述   观众的目的是什么   被欺骗,比如企图   愚弄潜在的客户   认为一个人有能力   提供产品所必需的   问题

通常,使用烟雾和镜子来给管理层或客户留下深刻的印象,以获得/保持资金,但下面没有真正的代码。这种方法有一段时间了,但是,最终导致其他反模式(意大利面条代码,blob等),以便在实际需要时尝试获得真实内容。

以Smoke和Mirrors开头的项目往往会以可怕的方式结束。就像一段关系一样,如果你用谎言开发代码,最终一切都会崩溃。

答案 1 :(得分:2)

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

如果实现类似于计算器之类的东西,你可以编写所有加法,减法,乘法和除法的方法,但是更高级的函数都会随机返回,看起来像是在执行这项工作。管理oohs和aahs长长的数字。

答案 2 :(得分:1)

因为经常是90%的营销,10%的管理和0%的发展。

承诺不足,过度交付。不是相反。

答案 3 :(得分:1)

如果您点击Smoke and Mirrors的链接,您会看到以下代码段:

  

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

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

答案 4 :(得分:1)

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

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

创建原型通常是件好事 - 但是你必须始终非常小心内部和(尤其)外部世界要清楚它是< / em>原型,而不是成品。无论如何,管理层通常都希望相信原型是成品(或者至少可以构成原型的基础)。鼓励这样的信念是件坏事。