Design patterns 为什么是';烟雾与镜子';反模式?

Design patterns 为什么是';烟雾与镜子';反模式?,design-patterns,language-agnostic,anti-patterns,Design Patterns,Language Agnostic,Anti Patterns,我最近在阅读,注意到其中包括: 烟雾与镜子:演示如何 将显示未实现的函数 为什么这样做是件坏事?我能看到的唯一一件事是,如果你从来没有真正开始实现这个函数。如果函数在正式规范中,“保证”完成,该怎么办?为了向潜在客户展示他们的能力,这样做还是不好的吗?因为通常情况下,90%的营销、10%的管理和0%的开发都是如此 在承诺之下,过度交付。而不是相反。烟雾和镜子似乎不同于实体模型 Smoke and mirrors将是,如果实现类似于计算器的东西,您将所有的方法都编码为加法、减法、乘法和除法,但更高

我最近在阅读,注意到其中包括:

烟雾与镜子:演示如何 将显示未实现的函数


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

因为通常情况下,90%的营销、10%的管理和0%的开发都是如此


在承诺之下,过度交付。而不是相反。

烟雾和镜子似乎不同于实体模型


Smoke and mirrors将是,如果实现类似于计算器的东西,您将所有的方法都编码为加法、减法、乘法和除法,但更高级的函数都会返回random,似乎可以完成这项工作。管理OOH和AAH的长字符串。

如果您按照链接查找,您将看到以下代码段:

在计算机编程领域,它被用来描述一个还不存在的程序或功能,但看起来似乎存在(参见vaporware)。这样做通常是为了演示代码完成后结果项目的功能/外观,例如在贸易展上


这是危险的,因为在我们的世界里,任何东西都可以改变。

要了解烟雾和镜子为何会是反模式,请查看维基百科条目。从文章中:

《烟与镜》是一部电影的隐喻 欺骗性的、欺诈性的或不真实的 解释或描述。源头 这个名字是根据魔术师的名字命名的 魔术师制造的幻觉 对象通过显示或消失 将后视镜伸出或缩回 一阵令人困惑的烟雾。这个 这个表达可能包含了 在搬运方面的技巧或聪明 我发现了这样一个骗局

在计算机编程领域, 它用来描述一个程序或程序 尚未存在的功能, 但看起来好像是这样(参见。 蒸汽)。这是经常做的 演示结果项目是什么 代码后的功能/外观是否相似 是完整的-在贸易展上,例如 例如

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

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


以烟雾和镜子开始的项目往往以可怕的结局告终。就像一段感情,如果你用谎言来编写代码,最终一切都会崩溃。

虽然很多答案都暗示了(在我看来)真正的问题,但没有一个答案能直接给出

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


创建一个原型通常是一件好事,但是你必须在内部和(特别是)外部都非常小心,以清楚它是一个原型,而不是一个成品。不管怎样,管理层通常希望相信原型是成品(或者至少可以构成成品的基础)。鼓励这种信念是一件非常糟糕的事情。

不,这不是一种反模式。你所描述的是英文特的错误心态。请参阅第5节。不幸的是,在现实世界中,您很少能够一直这样做(除非您的管理层了解软件——这在非软件行业并不常见)。在这种情况下,如果你做了你的建议,你最终将得不到资金,所以你可以真正做你想做的事。真正的诀窍是向管理层展示你正在做什么(让它成为“闪光”),并继续在幕后做真正的工作。向他们详细说明结果,以便他们理解。(这对任何销售策略都有好处。)这只是一种反模式,因为它经常适得其反。当你告诉他们什么是存在的,而什么不是存在的,并且“阻碍你的东西”出现了,它也会出现,你被客户和管理层困在了一起,找人来责怪你。。。就像那个说它存在的人,其实它并不存在…+1,用于将编程与关系进行比较。只是不要认为你可以在关系中“从头开始,为下一个版本重新编写”,否则你的子进程会被分叉(+1我认为第一句话涵盖了所有内容:烟雾和镜子是一个欺骗性、欺诈性或非实质性解释或描述的隐喻。这与模型应该是什么不同——预期的行为/用例,有时可能有点雄心勃勃,但不是欺骗性的或欺骗性的。烟雾和镜子至少是欺骗性的till要求您开发通过使用paint.exe绘制屏幕所显示的内容。您可能会发现实现实际功能遇到问题…客户知道您已经让它工作了,它看起来与他们的图片完全一样。更改还不错。不存在是。+1,因为它与o的角度略有不同我投了赞成票。然而,我更喜欢“欺骗性和欺骗性”这一更强有力的术语:-)根据我的经验,变化通常是不存在的原因。当一个被称为“有史以来最伟大的东西”的模型在地狱和地狱之间反复出现时,它的变化太大了,这就是欺诈