作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当从事一个复杂的项目时,许多人会参与开发,时间跨度很长。因此,如何让每个人都参与到理解领域模型的问题就来了。
当一个项目最初是按照 DDD 开发的,它可能会在所有人中得到很好的讨论,并且经过精心设计。在这个阶段,每个人都相对容易理解并认同底层领域模型。
然而,随着项目迭代时间的延长,可能会涉及到不同的人群,很少有人能够掌握全貌。即使代码维护得很好,非程序员(包括领域专家/产品经理/测试人员)也很难掌握代码中嵌入的业务规则。
我能想到的唯一出路是为每次更改保持文档/umls/图表的良好维护,并始终反射(reflect)底层模型。然而,我认为这对任何非琐碎的项目来说都是一个巨大的挑战。而且很难决定文档中需要包含多少细节。
是否有什么最佳实践可以借鉴,使得领域模型可以被人们很好地理解,并且也很容易随着产品的发展而发展?
最佳答案
使用行为驱动开发 (BDD)。
BDD 就像 TDD。但 BDD 始终专注于测试域行为,并且测试是使用域的通用语言定义的。所有故事/功能/场景都可以以结构化的、人类可读的形式编写 (like this)
并且由于测试与您的代码紧密耦合,它们必须保持同步(假设您的团队在保持测试最新方面遵守纪律)。
根据我的经验,这提供了以适度可读的格式公开最新域规则的最经济的解决方案。
关于testing - 如何让非程序员了解领域模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52601054/
我是一名优秀的程序员,十分优秀!