2009-02-05 59 views
5

我正在使用数据库后端的10页网站。有500多个对象正在使用,试图在ASP.Net中实现MVP模式。我从一个单页面追踪代码执行,我的手指已经在Visual Studio中的F-11上运行了大约40分钟,似乎没有结束,可能有1000多个方法调用一个网页!然而,如果只有50个对象是一件事,那么代码执行会在所有这些对象中徘徊,就像数百万蚂蚁疯狂地在他们巨大的土墩房子里一样,充斥着对象隧道。 因此,一个新的反模式诞生了:AntFarmAntFarm反模式 - 避免策略,解毒药帮助治愈

AntFarm也被称为“OO-Madnes”,“OO-Fever”,OO-ADD或简单的设计模式吸毒者。

这不是我第一次看到这个,也没有我的同事在其他公司。看来,这种风格正在积极推动,或在任何情况下是误解众多的OO/DP福音书四处走动...

我想介绍反模式的反模式:商品及服务税或“Get Stuff Done”AKA“Get Sh ** done”AKA GRD(GetRDone)。这种模式专注于它所说的话,以简单的方式完成任务。我可能会在后面的文章中试图详述它,或者请在这个解毒剂模式上分享你的想法。

无论如何,我正在写AntFarm反模式的一个很好的例子(作为奖金,没有文档或评论)。请分享您对这种反模式如何变得如此重要的想法,我们如何避免它,以及如何在一个必须与之合作的现场系统中撤消或处理这种模式!

+0

对象是否经过单元测试? – 2009-07-22 19:33:48

+0

很好的问题,我认为开发团队相信他们正在做一些单元测试......就像他们实施的许多其他模式一样,他们会以一个想法开始,然后在激烈的战斗中它有时会开始分崩离析。有了这个复杂的体系结构,我不确定自己的unnit-testing会有多大的帮助。 – alchemical 2009-07-23 16:16:56

回答

8

我认为帕尔纳斯几乎把它钉在On the Criteria to be used in Decomposing Systems into Modules。每个模块都应该隐藏一个设计决策,一个可能在未来发生变化的决策。一般来说,没有什么可隐藏的模块通常只是开销。他并不是完全在谈论班级,但我认为推理仍然适用。

1

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

哦,是的,反模式设计可以称为“蚂蚁山”,这是一个更清晰的描述,我认为。我确实认为它现在是相当不错的,而且似乎在不断增长......我仍然想知道我们如何能够摆脱它,并且写出更清晰,更简单的代码,只需最小的复杂性就能完成工作。

3

如果是确因过度设计(这听起来像它),然后这里有一些同义词您:

Gas Factory
鲁布·戈德堡机械
荒地鲁宾逊玩意儿

但我个人的名义对于这个“尝试太F#$%3n困难”。节哀顺变。

干杯 阿德里安

+0

这是放置它的好方法(后面的描述)! – alchemical 2009-07-13 18:32:44

2

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

另外我会打电话反反模式KISS。

0

这里的问题是你的设计模式本身是非OO的。从非OO模式开始,尝试将其作为“对象”来实现,最终会导致混乱。

仅仅因为系统是在OOPL中编写的,不会导致系统OO。

0

如果您认为蚂蚁农场是通过使用简单代理(蚂蚁)来探索复杂问题空间(蚂蚁农场)的有效方法,那么它开始看起来反而更少了反模式。 (a)它很难适应你脑海中的所有东西(不管它是否是OO)和(b)它的困难性OO积极地减少了将它全部放在头上的需要