【问题标题】:Enterprise Architecture Anti-patterns [closed]企业架构反模式
【发布时间】:2010-01-11 03:42:48
【问题描述】:

在为企业构建应用程序时要避免哪些关键反模式?顺便说一句,我们正在使用 C#、SQL Server 和 Silverlight - 但我想一些反模式将是语言中立的。

【问题讨论】:

  • 有些人可能认为企业架构本身就是一种反模式。
  • 我不认为这是社区 wiki,但很高兴得到指导
  • 这是一个非常主观的话题(没有绝对正确的答案),所以应该是CW。
  • 同意,这应该是一个社区 Wiki(我已经这样标记了我的答案)。

标签: design-patterns architecture anti-patterns


【解决方案1】:

维基百科对anti-patterns 的主题非常全面,这是有关该主题的书:AntiPatterns

在我的经验中排名前五:

  1. Premature optimization
  2. Anemic Domain Model
  3. God object
  4. Golden Hammer(参见正则表达式)
  5. Chain Gang

【讨论】:

  • 谢谢 Jason - 对前 2 或 3 名有什么想法吗?
  • 那个反模式目录充满了无聊的条目和自行车棚的讨论。
【解决方案2】:

企业天坑:

1:读到你的数据库访问应该在一个单独的层中

2:嘿,我们有一个数据库层。

2(b) 嘿,我们甚至还有一个委托层来抽象我们的数据库。

3:应用law of leaky abstractions-ie,因为委托中有一些方法可以获取东西,假设它们在那里可以使用而不考虑后果 - 如连续调用“getPurchaseOrder()”10次在一个页面上,即使 getPurchaseOrder() 是一个包装 5 个独立数据库调用的方法。

4:坐下来享受加载了 100 个独立数据库调用的网页(遗憾的是,这并不夸张)。

不确定我将其称为什么反模式?也许“图层不是免费的”?

【讨论】:

  • 将数据访问关注点与应用程序的其余部分分开并不一定会产生您所描述的原始存储库模式,系统中的每种实体都有 get 和 set 方法。认为 #s 3 和 4 是 #s 1 和 2 的自然结果是不诚实的。
  • @Rex - 它们可能不是自然结果,但它们肯定是一种反模式。经常发生的事情足以考虑防范。
  • @Rex,我理解反模式是代码可能陷入的负面模式。我在这里想到的是针对层的编码,而没有意识到或认为您必须考虑它们实际上在做什么。例如鉴于我上面的例子,你会看到(好吧,我已经看到,无论如何,人们写了这样一行:if (getPurchaseOrder()!=null && getPurchaseOrder().price>10)。
猜你喜欢
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多