“亲切照料”下的领域驱动设计

DDD入门指南
本文介绍了如何通过将大问题分解为小问题来引入领域驱动设计(DDD),重点在于实践而非理论。文章强调了理解团队成员能力的重要性,并提供了一种逐步引入新概念的方法。此外,还讨论了如何应对采用DDD时可能遇到的阻力。
\

关键要点

\\
  • 在将DDD引入新团队时,请从有界的上下文开始——将大问题分解为可管理、可解决的小问题。撇开繁文缛节,动手去做。\\t
  • 了解团队成员的能力,以便能够成功地指导他们,这与本能和同理心有很大关系。仔细聆听、尊重、不评判、和善,这些都是非常重要的。\\t
  • 人们抵制DDD,是因为他们认为DDD的内容太多了,或者会对他们当前的流程造成太大破坏。解决小问题是可以帮助人们获得对DDD信任的一种很好的方式。\\t
  • 领域建模是一门艺术,而不是一门科学,因此,出现碰壁或突然改变方向的情况并不罕见。团队需要一个熟悉建模的教练,让你在整个过程中无需担心视角的变化。\
\\

在2017年探索DDD会议上,Serial DDD倡导者Julie Lerman谈到了如何通过“亲切照料”进行领域驱动设计。InfoQ采访了Lerman,谈论了她如何向新客户介绍DDD并帮助他们取得成功。

\\

InfoQ:大多数DDD从业者都记得他们是如何首次引入域驱动设计的。你的DDD起源故事是怎样的?

\\
\

Julie Lerman:不管你信不信,我必须感谢Jimmy Nilsson!多年前,当微软发布LINQ和Entity Framework时,发生了一些争议。我和Jimmy Nilsson在InfoQ上接受了一次采访,他被问到他对LINQ和Entity Framework的看法——这是我非常感兴趣的一个观点。在采访结束时,Jimmy被问到一个问题:“你最喜欢的书是什么?”他回答是Eric Evans的《领域驱动设计》,Jimmy说它读起来就像诗歌一样。那时我正在为O’Reilly Press写一本关于Entity Framework的书。这是我的第一本书,我真的很想知道让一本科技图书读起来像诗歌的意味着什么。所以我拿起了Eric的书,书中涉及的第一个讨论话题是关于领域专家参与度的重要性——这对我在客户方面取得的成功来说至关重要。我喜欢了解他们的业务,并与我的很多客户建立了长期稳固的关系。

\
\\

InfoQ:DDD涵盖了很多主题。当你开始与新团队合作时,你是如何引入DDD的,以及如何避免向其他人灌输太多新概念?在这方面是否存在一些教学技巧?

\\
\

Lerman:我通常是在他们正在重构或更换遗留应用程序或正在开发应用程序时加入他们的,而且我只在那里短暂停留,所以我会尽可能快尽可能多地让他们接受DDD。我从有界的上下文开始——将他们的大问题分解为可管理可解决的小问题。我甚至在一开始都没有使用术语。然后我从松散的有界上下文中选择一个简单的目标,并分析它,然后识别出领域模型的不同部分——一次一个,而不是一次性完成。我在一开始就使用新概念,不担心术语问题。从我个人的经验来看,大脑会被术语锁定。所以,我找到了更简单的方法引入新主题——更加明显的类比方式。最后,我再把术语添加进去……聚合、聚合根等,并向他们解释使用这些术语的重要性,这样每个人都可以达成共识。对于无所不在的语言来说,这也是一个很好的选择!

\
\\

InfoQ:Evan那本书的副标题是“解决软件核心的复杂性”。康威定律意味着复杂的应用程序通常需要复杂的组织和团队来支持它们。DDD的概念,例如有界上下文,是否有助于理解和指导团队?

\\
\

Lerman:了解团队成员的能力,以便能够成功地指导他们,这与本能和同理心有很大关系。仔细聆听、尊重、不评判、和善,这些都是非常重要的。但是,我也很依赖直觉和经验来“读取房间”。我的星座是天秤座,所以我的性格主要关于平衡和调解。当我与团队合作,并且需要以积极的方式继续前进时,对我的客户有很大的帮助。我认为这与DDD人性的一面很有关系——与客户密切合作以了解他们的业务,识别他们的问题并获得他们对你的信任,最后解决所有的问题。这就是最初Eric的书吸引我的原因。DDD的技术或战术设计部分只是锦上添花!

\
\\

InfoQ:你有听到哪些反对采用DDD的争论?你是如何回应他们的?

\\
\

Lerman:有一些观点认为DDD需要学习的东西太多了,这会对我们的流程造成太大破坏,因为需要太多的重新思考、重构和时间。

\\

我回到了“解决小问题”的方法——寻找机会通过小投入获得大利益。

\
\\

InfoQ:如果你只有两三天的时间来引入DDD和指导团队,你会怎么做?你的目标是什么,以及如何优化时间以最大化实现这些目标?

\\
\

Lerman:我首先会想知道他们在做什么,他们的目标是什么以及他们担心什么——显然是某种东西,否则他们就不需要我加入。然后我就开始进行神奇的“把大问题分解成小问题“,从这些问题中挑选一些解决方案,然后对其进行建模。我最常帮助他们进行遗留系统的替换,我们在白板上进行建模。建模是一门艺术,而不是一门科学,因此,因此,出现碰壁或突然改变方向的情况并不罕见。对于那些熟悉建模并且在整个过程中不担心视角变化的人来说,体验这一点对他们有好处。我出于同样的原因在那里做一些群体编程。我很清楚我们可能会遇到哪些技术问题,因此我可以指导他们完成。

\
\\

InfoQ:对于试图开始使用DDD的人,你有什么建议吗?

\\
\

Lerman:很多人通过专注于技术软件实现(称为战术设计)开始他们的DDD之旅,战略设计对于DDD来说至关重要,并且当你与领域专家合作,了解他们的领域和计划你的系统的时候,战略设计应该是放在第一位的。确保自己至少对DDD的广度、目标、它的用武之地以及在哪些场景中会用力过猛多需要有一定的了解。

\
\\

关于受访者

\\

286cbb66214c563e0ba0aa90ce143c63.jpgJulie Lerman 是微软区域总监和微软MVP。她主要从事全球软件团队的软件教练和顾问方面的工作。你可以在世界各地的用户组和大会上看到Lerman呈现的有关Entity Framework、域驱动设计和其他有趣的主题。Lerman在thedatafarm.com/blog上发表博文,是备受好评的“Programming Entity Framework”一书的作者、MSDN杂志Data Points专栏作者和Pluralsight.com热门视频的作者。

\\

查看英文原文DDD With TLC

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
居民消费是指居民在日常生活中为满足衣食住行、教育、医疗、文娱等各方面需求而进行的商品购买和服务支出。它不仅反映了居民生活水平和消费结构的变化,也是衡量经济活力和社会发展状况的重要指标。在宏观经济中,居民消费是拉动内需、推动经济增长的关键动力之一 本次团队分享的是中国31个省份居民消费水平、消费结构数据,包括393个居民消费的相关指标数据,数据年份为2000-2023年 一、数据介绍 数据名称:中国地区居民消费水平、结构393个指标 数据范围:31个省份 时间范围:2000-2023年 样本数量:31省*24年 数据来源:中国住户调查年鉴 更新时间:2025年4月 二、数据指标 全体居民消费支出 食品烟酒支出 衣着支出 居住支出 生活用品及服务支出 交通通信支出 教育文化娱乐支出 医疗保健支出 其他用品及服务支出 食品烟酒支出比重 衣着支出比重 居住支出比重 生活用品及服务支出比重 交通通信支出比重 教育文化娱乐支出比重 医疗保健支出比重 其他用品及服务支出比重 全体居民现金消费支出 城镇居民消费支出 城镇居民现金消费支出 农村居民消费支出 农村居民现金消费支出 城镇居民家庭全年现金消费支出 食品支出 粮食支出 淀粉及薯类支出 干豆类及豆制品支出 油脂类支出 肉禽及制品支出 蛋类支出 水产品类支出 菜类支出 调味品支出 糖类支出 烟草支出 酒和饮料支出 干鲜瓜果类支出 坚果及果仁支出 糕点类支出 奶及奶制品支出 其他食品支出 在外用餐支出 食品加工服务费支出 服装支出 衣着材料支出 鞋类支出 衣着加工服务费支出 住房支出 水电燃料及其他支出 家庭设备及用品支出 耐用消费品支出 室内装饰品支出 床上用品支出 家庭日用杂品支出 家具材料支出 家庭服务支出 交通支出 通信支出 文教娱乐支出 文化娱乐用品支出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值