DDD理论学习系列(1)-- 通用语言
1.引言在开始之前,我想我们有必要先了解以下DDD的主要参与者。因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是? 那怎么解决交流障碍这个问题呢? 2. 通用语言抛开DDD而言,单从字面意思来理解,我们首先肯定先联想到作为世界使用最多的语言--英语。
那DDD中通用语言又是怎样呢? 通用语言是团队交流的基础上建立起来的,代码则是基于通用语言来进行业务表达的。 3. 举个例子项目经理安排了一项任务给我: 这明显是专业术语,我不懂的专业术语。 但通用语言是领域专家和开发人员一起创建的,所以我们开个需求会议,来梳理下专业术语背后的含义。 可销控制的应用场景是: 这么一解释,是不是明白不少了。但是不是还有几点疑惑?
经过讨论,得出以下结论:
好了,这下需求理解个七八九了。 经过这么一说明,我们是不是已经理清了【可销控制】这个需求点。 那这种通过团队交流达成共识的能够简单清晰准确传递业务规则的语言(可以是文字、图片等)即可称为通用语言。 4. 通用语言的价值就像上面所说的那样,通用语言的最大价值是解决了交流障碍问题,使领域专家和开发人员能够协同合作,从而能够确保业务需求的正确表达。 5.通用语言的代码表达既然开发人员也要基于通用语言进行代码开发,那代码如何体现通用语言呢?
上面这个用例就是基于通用语言的用例,简单清楚的说明了业务规则。 bool anthentic = false;
User user = _userRepository().FindUserByTenantIdAndUserName(tenantId,userName);
这段代码完全不能反应通用语言,主要存在以下问题:
知道问题后,我们可以讲代码略做改动: false;
Tenant tenant = _tenantRepository.FindTenantById(tenantId);//检查租户是否激活if(tenant!=null&&tenant.IsActive){
User user = _userRepository.FindUserByTenantIdAndUserName(tenantId,userName);
以上代码虽然也不是最终结果,但至少对通用语言进行了体现。通读代码,就能明白业务用例,体现代码即设计这一思想。 原文地址:http://www.cnblogs.com/sheng-jie/p/6819378.html .NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |