AntFarm反模式 - 避免的策略,解毒帮助愈合

时间:2009-02-05 00:38:24

标签: asp.net design-patterns oop anti-patterns

我正在开发一个带有数据库后端的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反模式的一个很好的例子中(作为奖励,没有文档或评论)。请分享你对这种反模式如何变得如此普遍,我们如何避免它以及如何在一个必须使用的实时系统中撤消或处理这种模式的想法!

6 个答案:

答案 0 :(得分:8)

我认为Parnas几乎在On the Criteria to be used in Decomposing Systems into Modules中钉了它。每个模块都应该隐藏一个设计决策,一个可能在未来发生变化的决策。通常,没有任何隐藏的模块通常只是开销。他并没有完全谈论课程,但我认为推理仍然适用。

答案 1 :(得分:3)

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

Gas Factory
Rube Goldberg机器
希思罗宾逊的装置

但是我的个人名字“尝试过F#$%3n很难”。我的哀悼。

干杯 阿德里安

答案 2 :(得分:2)

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

我也称反抗模式KISS。

答案 3 :(得分:1)

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

哦,是的,反模式设计可以被称为“蚂蚁山”,我认为这是一个更清晰的描述。我确实认为它现在非常优秀,并且似乎正在增长...我仍然想知道我们如何能够摆脱它一般,并编写更清晰,更简单的代码,只需要最小的复杂性即可完成工作

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

基于“适合你的一切”的复杂性对OOP的批评总是忽略了(a)它很难适应你头脑中的所有东西(无论是否是OO)和(b)OO无论如何,积极地减少了将所有这一切都放在脑中的需要