5

我正在开发一个带有数据库后端的 10 页网站。有 500 多个对象在使用中,试图在 ASP.Net 中实现 MVP 模式。我正在从单页跟踪代码执行,我的手指已经在 Visual Studio 中的 F-11 上停留了大约 40 分钟,似乎没有尽头,一个网页可能有 1000 多个方法调用!然而,如果只有 50 个对象,那将是一回事,代码执行会蜿蜒穿过所有这些对象,就像数百万只蚂蚁在它们巨大的土堆房子里疯狂地工作,到处都是对象隧道。 因此,一种新的反模式诞生了:AntFarm

AntFarm也被称为“OO-Madnes”、“OO-Fever”、OO-ADD 或简单的设计模式迷。

这不是我第一次看到这种情况,我在其他公司的同事也不是第一次看到。似乎这种风格正在被积极宣传,或者无论如何是对周围众多OO / DP福音的误解......

我想在反模式中引入一个反模式:GST 或“Get Stuff Done”AKA“Get Sh** done”AKA GRD (GetRDone)。这种模式专注于它所说的,以一种简单的方式完成工作。我可能会尝试在以后的帖子中对其进行更多概述,或者请分享您对这种解毒剂模式的想法。

无论如何,在我写作的时候,我正处于 AntFarm 反模式的一个很好的例子中(作为奖励,没有文档或评论)。请分享您对这种反模式如何变得如此流行的想法,我们如何避免它,以及如何在必须使用的实时系统中撤消或处理这种模式!

4

6 回答 6

8

我认为 Parnas 几乎将它钉在On the Criteria to be used in Decomposing Systems into Modules中。每个模块都应该隐藏一个设计决策,这个决策将来可能会改变。一般来说,没有什么可隐藏的模块通常只是开销。他并没有确切地谈论课程,但我认为推理仍然适用。

于 2009-02-05T01:06:39.693 回答
3

如果确实是由于过度设计(听起来很像),那么这里有一些同义词:

煤气厂
鲁布戈德堡机器
希思罗宾逊装置

但我的个人名字是“努力尝试 F#$%3n”。节哀顺变。

干杯阿德里安

于 2009-07-13T10:42:29.910 回答
2

许多文件可以做。讨厌。10 个网页 500 个对象似乎是一个疯狂的比例。您是否考虑过对解决方案运行代码分析?可能会给你一些有趣的统计数据来反击。

我也将反反模式称为 KISS。

于 2009-07-13T10:50:32.657 回答
1

感谢Glomek,这篇文章是针对一个有趣的问题空间,进入OO 的核心,即如何设计您的对象......对于成功或失败,感谢您的链接。

哦对了,反模式设计可以叫“蚁丘”,我觉得这样描述比较清楚。我确实相信它现在非常流行,并且似乎正在增长......我仍然想知道我们如何才能从总体上摆脱它,并编写更清晰、更简单的代码来完成工作所需的最小复杂性.

于 2009-02-05T18:59:20.823 回答
0

这里的问题是您的设计模式本身是非面向对象的。从非 OO 模式开始,尝试将其实现为“对象”,最终会变得一团糟。

仅仅因为系统是用 OOPL 编写的,并不会使系统 OO。

于 2010-04-07T15:48:38.997 回答
0

如果您认为蚂蚁农场是通过使用简单代理(蚂蚁)来探索复杂问题空间(蚂蚁农场)的有效方式,那么这看起来显然不那么反模式。

基于“把所有东西都装进你的脑袋”的复杂性对 OOP 的批评总是忽略(a)很难把所有东西都装进你的脑袋(不管它是否 OO)和(b)OO 积极地减少了无论如何都需要把这一切都放在你的脑海里

于 2010-04-11T22:56:57.237 回答