BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Eric Evans:领域驱动设计(DDD)当前更为适用

| 作者 Thomas Betts 关注 24 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2017年9月25日. 估计阅读时间: 4 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

有人质疑2003年出版的《领域驱动设计》一书中的理念当今是否依然适用。在该书的作者Eric Evans看来,相比于14年前该书出版时,当前领域驱动设计(DDD,Domain-Driven Design)的理念更为适用。这是来自于Evans在Explore DDD大会上所作的开幕式主题演讲。Explore DDD大会是首个聚焦于DDD的开创性大会,在北美的丹佛市举行。Evans的报告依据软件开发的历史沿革,探讨了一些DDD的主要理念。比起我们过去所采用的方式,软件开放工具和技术范围在不断扩展,其中不少已经采用了DDD方式。Evan指出:“DDD不涉及具体的开发技术,但也并非对技术漠不关心”。

回顾2003年,那时我们所能使用的最先进技术,无非是Java、J2EE、SQL数据库和对象关系映射(ORM,Object-Relational Mapper),此外没有更多的选择。这样的选择面不广,导致了我们使用这些工具仅是因为这些工具是唯一可用的。Evans举例说,ORM并不适用于解决我们的所有事情,但依然被我们持续使用了十到十五年。Evans称,他并非说对于某些情况任何工具和模式架构都不适用。而是对不分场合都仅有一套解决方案可用感到困惑。他相信,DDD在过去的十四年间得到了发展,因此“如果在推行DDD时继续照本宣科《领域驱动设计》一书,这就不太光彩了”。

在Evans撰写《领域驱动设计》一书时,其中很多概念是难以用当时的工具所实现的。但时至今日,使用现代的平台实现已变为易事。Evans特别强调了书中给出的“使值对象不可变”这一理念。这一理念曾非常难以做到,以至于被开发人员认为是不值得遵守的。但是情况已经发生了变化,函数编程语言让不可变更易于实现。与此同时,微服务的推进有助于标记上下文边界(Context Boundary),而NoSQL数据库提供了比关系数据库更好的聚合管理。这些进展使开发人员可以完全聚焦于解决复杂性问题,该问题是软件的核心问题。Evans称赞这些进展为开发人员编写出完全表达模型的软件提供了方便。“如果技术能在此类事情上为我们提供支持,那么我们就可以聚焦于去给出更好的模型”。

软件开发中,妥协和权衡是不可避免的。Evans鼓励所有人接受“并非所有的大型系统都会得到很好的设计”。根据“好篱笆造就好邻里”这一理念,受限上下文会使系统中好的部分免受不好部分的影响。我们可以做出合理的推理,即并非所有的开发都能处于良好定义的受限上下文中,同时并非每个项目都会遵循DDD。开发人员常常会感慨,在工作中面对的是一些遗留系统。Evans却对遗留系统给予了高度的评价,因为企业利润通常主要来自于这些遗留系统。他鼓励开发人员,“终究会有一天,你所开发的系统也会成为遗留系统”,希望到那时它会得到交口称赞。

开源软件也受到了Evans的推崇,尤其是作为一种学习方式时。Evans在演讲中分享了他通过例子学习Smalltalk的经历。从案例中学习这一精神完全匹配Explore DDD大会的协同环境,大会中有三分之一的演讲是对真实世界案例研究,与会者分享了演讲者在实现DDD中的经验。

Evans很高兴看到风向已转变为趋向优雅设计。《领域驱动设计》一书的撰写,正是为了解决如何面对系统无法扩展导致业务也不能扩展的这类问题。DDD作为一种知我实现的需求,Evans指出:“对更整洁设计的需求,终将创建更整洁的设计”。

查看英文原文: Eric Evans: Domain-Driven Design Even More Relevant Now

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT