【问题标题】:In Domain Driven Design (DDD) How do you record and document a model在领域驱动设计 (DDD) 中,您如何记录和记录模型
【发布时间】:2011-12-20 10:12:33
【问题描述】:

在领域驱动设计中,您如何记录模型的关键方面,以便与您的团队进行交流并随着时间的推移进行开发?

我的意思是关键方面:

无处不在的语言 聚合根 实体/值对象 不变量

【问题讨论】:

标签: domain-driven-design


【解决方案1】:

在代码中。在谈话中。在白板、文档和模型上......

关键点是 (1) 普遍性和 (2) 一致性。因此,如果领域专家谈论“评估贷款申请”,您应该拥有在语法和语义上与该概念相匹配的代码。所以你可能有LoanApplication.Assess()。你不会有ApplicationManager.QualifyApplication() 或类似的。

因此,您只需在代码中记录语言。您也可以选择记录在文档和/或图表中。您还将在白板和讨论中使用。但在所有情况下,它都是同一种语言。

第一次。

【讨论】:

  • 那么您会为该语言编写一个“字典”吗?我想当你有几个领域专家时,他们不会用相同的词来形容事物。除此之外,您不会在每次会议上都有您所有的开发人员和领域专家,那么您如何保持这种一致性?
  • 通用语言的理念是开发一种通用语言,以便每个人确实使用该领域的通用词汇。如果领域专家对事物使用不同的词,这是他们应该尝试解决的问题。
  • 扭曲:这可以而且确实会发生。正如@DonRoby 所说,该过程的一部分是明确同意术语的含义。这需要各方面的纪律;对于领域专家来说,这意味着比通常情况更精确。例如,区分事物的“类型”和“实例”:例如“领域驱动设计”一书和该书的特定副本。它们不是同一件事。但在正常的谈话中,两者通常都被简单地称为“领域驱动设计书”。明确你的意思是开发这种无处不在的语言的一部分。
  • 因此,当您同意“一个术语的具体含义”时,您是否发现您必须在某处写下约定的含义,以便我们保持一致性并且不要忘记约定的内容(这听起来时间消耗)还是仅仅使用它就足够了?
  • 两者兼而有之。我喜欢亲自写下定义。 wiki 可以是一个很好的方式来做到这一点,因为它鼓励每个人参与。但关键是始终如一地使用该语言,然后它就成为项目“dna”的一部分。
猜你喜欢
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2010-11-16
相关资源
最近更新 更多