DDD学习笔录——提炼问题域之有效提炼知识的模型(三)
方式六:延迟对模型中概念的命名
对领域建模时命名很重要。
因为在不断的知识提炼过程中经常会发现已经被命名的概念与你最初理解的有出入,这时你当初的命名就会变成一个问题。其问题在于 最初选作名称的这个词所带来的“错误”联想 并且该联想还会限定你的思维方式。
Gery Young(我也不认识是谁)建议,为你不确定的模型区域使用难以理解的词组成名称(例如可以用于问题域无关的 颜色 等)。作为为模型区域或概念提供真实名称的替代方式,可以使用难以理解的词,直到你完全理解了一个关切问题所有的责任职责、行为及数据。
延迟对你模型中的概念进行命名,可以帮助你避免为业务利益,并且对正在尝试变更的实际情况进行建模大有好处。
命名还要当心有太多含义的术语。
例如,需要避免使用的名称类型为XXXXService和XXXXManager。如果发现自己要将服务或管理者附加到一个类或概念上,就要更具创造性地思考,争取弄明白名称背后的真实意图。
当觉得已经真正理解了模型的某部分时,这时才更有利于你为其提供一个合理且有意义的名称。
方式七:行为驱动开发
DDD学习笔录——提炼问题域之有效提炼知识的模型(三)的更多相关文章
- DDD学习笔录——提炼问题域之知识提炼与协作
提炼问题域的意义 理解一个复杂问题域以便创建简单且有用的模型需要深入详尽的知识以及深刻的见解,这些只能通过与从内到外理解该领域的人协作得到.对模型的设计进行连续实验和探究正是DDD的能力所能实现的.只 ...
- DDD学习笔录——领域驱动设计的常见误区(即错误的理解)
可以将DDD看成一种开发思想体系:它促成了一种新的以领域为中心的思维方式. 它是一种学习过程,而非最终目标,这就是DDD的最大优势. 任何团队都可以编写一个软件来满足一组用例的需求,但那些将时间和精力 ...
- DDD学习笔录——简介DDD的战略模式如何塑造应用程序的架构
前一篇,简单介绍了DDD战略模式的提炼问题域,这篇简单介绍它如何塑造应用程序的架构. 1.创建一个模型以解决领域问题 为每一个子域构建一个软件模型以处理领域问题并让软件与业务保持一致. 这个模型并非现 ...
- DDD学习笔录——提炼问题域之知识提炼与协作的基本原则
1.通过通用语言达成共识 通用语言,已经强调过好多遍了,在DDD再怎么重视都不为过,后面可能还会讲. 知识提炼的输出以及共识的构建就是常见的通用语言(UL). 当与业务相关人员和主题专家进行建模时,每 ...
- DDD学习笔录——提炼问题域之与领域专家一起获得领域见解
业务和开发团队之间的协作是DDD必不可少的部分,并且它是处于开发阶段的产品获得成功的关键. 领域专家指的是那些从业务领域的政策和工作流程到棘手处和特性都具有深刻理解的人.能够为你的问题区域提供深刻见解 ...
- DDD学习笔录——简介领域驱动设计的实践与原则
DDD在存在许多DDD模式的同时,也有大量实践和指导原则,这些都是DDD思想体系成功的关键. 1.专注于核心领域 DDD强调的是在核心子域付出最多努力的需要.核心子域是你的产品会成功还是会失败的差异化 ...
- DDD学习笔录——简介DDD的战术模式、问题空间和解空间
DDD的战术模式 DDD的战术模式(也称为模型构造块)是一个帮助创建 用于复杂有界上下文的有效模型的 模式集合. 也就是我们常说的设计模式. 问题空间 问题空间将问题域提炼成更多可管理的子域,是真对于 ...
- DDD学习笔录——领域驱动设计DDD概念总结
- [CISCO] 转载:冲突域与广播域(区别、知识要点)
[CISCO] 转载:冲突域与广播域(区别.知识要点) 1.传统以太网操作(Ethernet Connection Ethernet) 传统共享式以太网的典型代表是总线型以太网.在这种类型的以太网中, ...
随机推荐
- ActionDescriptor 的认识
ActionDescriptor的作用是对Action方法的元数据的描述,通过ActionDescriptor我们可以获取到action方法的相关的名称,所属控制器,方法的参数列表,应用到方法上的特性 ...
- Linux下的目录结构
1./ -根 每个文件和目录从根目录开始 只有root用户具有该目录下的写权限,请注意,/root是root用户的主目录,这与/.不一样. 2. /bin -用户二进制文件 包含二进制可执行的文件 ...
- LeetCode OJ:Valid Anagram(有效字谜问题)
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- python 魔法方法补充(__setattr__,__getattr__,__getattribute__)
python 魔法方法补充 1 getattribute (print(ob.name) -- obj.func())当访问对象的属性或者是方法的时候触发 class F(object): def _ ...
- 深入Guerrilla Games解密次世代开山大作《杀戮地带暗影坠落》(The technology of Killzone Shadow Fall)
文章摘要:这几天终于有时间,把全文翻译完了,自己感觉不是太满意,不过大家能看懂就好,就当一个学习的机会.整篇文章通过SONY第一方游戏工作室Guerrilla Games主创的语录,为我们展现了次世代 ...
- php str_pad() 用法
$temp = str_pad(" ", 10000); for($i=0;$i<20;$i++){ echo $temp; echo $i; sle ...
- phpcms v9 tags调用方法
{loop $keywords $keyword} <a href="{APP_PATH}index.php?m=content&c=tag&catid={$catid ...
- 【django】Bootstrap 安装和使用
官网 下载:推荐下载源码包 安装Bower:使用Bower安装并管理 Bootstrap 的Less.CSS.JavaScript和字体文件(通过npm安装bower) npm install -g ...
- Python学习-括号
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...
- python学习-实现用户密码登录,输错三次锁定
作业需求: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 判断用户是否在黑名单,若在黑名单,则将用户锁定 判断用户是否存在,若不存在,提示用户不存在 若用户存在,判断登录密码是否 ...