所以我从团队中的一位开发人员那里得到了这个问题:什么是域驱动设计?我当然可以指出埃文斯的这本书,但这实际上是一个答案吗?
您如何用几句话向团队中的初级软件工程师解释DDD?
答案 0 :(得分:44)
我想说这种做法促使你把精力集中在'问题空间'而不是'解决方案空间'上。通过学习并真正了解和理解领域来推动紧急解决方案(设计)。其中一种做法(取自XP)将是编写问题域中出现的故事。通过这些,您可以确定您的设计的用例和对象。它们“出现”并告诉您解决方案需要什么,以及它们如何相互交互。
答案 1 :(得分:22)
答案 2 :(得分:9)
在发现“域”的过程中,您构成了一种共同语言,即开发人员和项目中所有其他利益相关者都能理解。
域模型及其“术语”在成品的源代码中是非常明显的。这至少是我的经历
答案 3 :(得分:4)
DDD的一个重要部分是所谓的普遍存在的语言;即说与商业专家相同的语言。并制作您的代码/架构,以便它反映这种语言,以避免阻抗问题。
答案 4 :(得分:4)
试图了解您正在编写的软件是什么,并在模型中反映出这种理解。
答案 5 :(得分:2)
Domain Driven Design旨在管理域模型中应用程序的复杂性,以便最容易地将其提取出来。
用几句话来描述是非常困难的,但我会推荐InfoQ书作为一个很好的介绍。我也听说很多人用Evans的DDD书做了一个读书俱乐部,这本书帮助了解了很多。
答案 6 :(得分:1)
对我而言,OOD / OOP的下一级是封装是关于问题空间的,如用户所描述和理解的,而不是技术实现。