《领域驱动设计:软件核心复杂性应对之道》读书笔记

第2章 交流与语言的使用

2.4 文档和图

图是一种沟通和解释手段,它们可以促进头脑风暴。简洁的小图能够很好地实现这些目标,而涵盖整个对象模型的综合性大图反而失去了沟通或解释能力,因为它们将读者淹没在大量细节之中,加之这些图也缺乏目的性。鉴于此,我们应避免使用包罗万象的对象模型图,甚至不能使用包含所有细节的UML数据存储库。相反,应使用简化的图,图中只包含对象模型的重要概念——这些部分对于理解设计至关重要。

设计的重要细节应该在代码中体现出来。良好的实现应该是透明的,清楚地展示其背后的模型。

经过仔细选择和构造的图可以帮助人们集中注意力,并起到指导作用,当然前提条件是不能强制用图来表示全部模型或设计,因为这样会削弱图的清晰表达的能力。

文档应当鲜活并保持最新。

第8章 突破

重构的投入与回报并非呈线性关系。通常,小的调整会带来小的回报,小的改进也会积少成多。小改进可防止系统退化,成为避免模型变得陈腐的第一道防线。但是,有些最重要的理解也会突然出现,给整个项目带来巨大的冲击。
可以确定的是,项目团队会积累、消化知识,并将其转化成模型。微小的重构可能每次只涉及一个对象,在这里加上一个关联,在那里转移一项职责。然而,一系列微小的重构会逐渐汇聚成深层模型。
一般来说,持续重构让事物逐步变得有序。代码和模型的每一次精化都让开发人员有了更加清晰的认识。这使得理解上的突破成为可能。之后,一系列快速的改变得到了更符合用户需要并更加切合实际的模型。其功能性及说明性急速增强,而复杂性却随之消失。

第9章 将隐式概念转变为显示概念

深层建模听起来很不错,但是我们要如何实现它呢?深层模型之所以强大是因为它包含了领域的核心概念和抽象,能够以简单灵活的方式表达出基本的用户活动、问题以及解决方案。深层建模的第一步就是要设法在模型中表达出领域的基本概念。随后,在不断消化知识和重构的过程中,实现模型的精化。但是实际上这个过程是从我们识别出某个重要概念并且在模型和设计中把它显式地表达出来的那个时刻开始的。
若开发人员识别出设计中隐含的某个概念或是在讨论中受到启发而发现一个概念时,就会对领域模型和相应的代码进行许多转换,在模型中加入一个或多个对象或关系,从而将此概念显式地表达出来。
有时,这种从隐式概念到显式概念的转换可能是一次突破,使我们得到一个深层模型。但更多的时候,突破不会马上到来,而需要我们在模型中显式表达出许多重要概念,并通过一系列重构不断地调整对象职责、改变它们与其他对象的关系、甚至多次修改对象名称,在这之后,突破才会姗姗而来。最后,所有事情都变得清晰了。但是要实现上述过程,必须首先识别出以某种形式存在的隐含概念,无论这些概念有多么原始。

资料

https://zhuanlan.zhihu.com/c_137428247
https://zhuanlan.zhihu.com/p/32459776
Bounded Context:https://m.aliyun.com/yunqi/articles/59498

【内容简介】 “每个有思想的软件开发者的书架上都应该有这样一本书”——Kent Beck “Eric设法收集了经验丰富的对象设计人员一直使用的一些设计过程,作为一个团队的人们在这些过程中却没能够成功地完成剩下的工作。人们将知识弄得支离破碎……却从来没有将建立领域逻辑的原则组织起来并使其系统化。这本书是非常重要的。”—— Kyle Brown,《Enterprise Java Programming with IBM WebSphere》的作者。 本书涉及的主题具体包括: ●隔离领域●实体、值对象、服务和模块●一个领域对象的生命周期●将过程表示为领域对象●创建没有副作用的函数●总体轮廓●独立的类●扩展说明●应用分析模式●将设计模式与模型相联系●维护模型的完整性●设计领域前景声明●选择重构目标●职责层次●创建可插入的组件框架●结合大比例结构与界限上下文 本书为读者系统地介绍了领域驱动的设计方法。书中介绍了大量优秀的设计示例、基于经验的技术以及促进处理复杂领域软件开发的基本原则。本书将设计和开发实践相结合,在介绍领域驱动设计时,还提供了大量的Java示例,这些例子都是从实际中提取出来的,展示了领域驱动设计软件开发中的实际应用。 通过对本书的阅读,读者将获得对领域驱动设计的总体认识,了解领域驱动设计中涉及的关键原则、术语和推断。本书介绍的经验和标准模式将为开发团队提供一种通用语言。另外,书中还介绍了如何在领域模型中进行重构,如何与敏捷开发进行集成,如何获得对领域更深的认识并增进领域专家和程序员之间的交流等。并在此基础上,介绍了在复杂系统和较大组织中进行的领域驱动设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值