田园 DDD 实践之道 [0]
领域驱动建模[wiki]本身是一种概念与思想,他并不会强制代码怎么去编写,但是提供了很多概念与方法引导开发者去抽象代码,正因为其抽象,在实际应用中门槛很高。并且在具体的实践中,也需要开发者对系统业务有一定的理解,否则很容易出现为了建模而建模的情况,这个系列旨在从简入手,让人人都可以掌握领域驱动建模,故戏称"田园之道"。
what's up?
不是每一个系统都是从 0 开始,工作也好,开源也罢,很多时候是需要在遗留代码[legacy code]上继续开发,我们会调侃这些代码叫祖传代码,总之他写的很烂,只能 work,拓展性很差,测试成本高,总有奇怪的 bug,难以应对复杂的需求,迁移改造成本大,会有说不完的缺点。
即使是从 0 开始的代码,也会因为时间不足,考虑不周全等,逐渐变成祖传代码。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊回以凝视。
better code
上世纪 90 年代(1999),一本名叫 Refactoring 的书,试图从代码层面解决这个问题,这本书在 2010 年引入国内出版翻译,试图让大家重视"重构",应对充满四处横行的 VUCA[wiki](易变、不确定、复杂、模糊),延展代码的生命周期,毕竟动辄推倒重来并不能带来什么业务价值。
英文原版: https://book.douban.com/subject/1419359/
中文译本: https://book.douban.com/subject/4262627/
这本书今天读来仍然不过时,读书的时候觉得非常惊艳,但他更多的是针对代码的场景,工作之后再读这本书会觉得工作实践有些距离。
2002 年,Martin Fowler 又写了一本代码优化的书,Patterns of Enterprise Application Architecture,中文译作<企业应用架构模式>(2010 出版),去探讨一些常见解决方案,并给出最佳实践,指导从业者开发更复杂的应用系统。
英文原版: https://book.douban.com/subject/1229954/
中文译本: https://book.douban.com/subject/4826290/
行业的发展,应用复杂的叠加,单纯的开发技巧开始不再能满足企业系统的发展,尝试将系统分离后再集成。
从更高层面的研究应用之间的集成关系。
03 年,一本 Enterprise Integration Patterns 开阔了一些系统设计的新思路,中文译作<企业集成模式>(2006 年出版),我在读书的时候,并没有中间件技术的概念,也许就是缺了这一本书的指导。
英文原作: https://book.douban.com/subject/1438029/
中文译本: https://book.douban.com/subject/1766652/
better architecture
业务技术日渐复杂,但是问题在于被关注的往往是技术问题,二问题往往更多的来自于业务需求的 VUCA,03 年 Eric Evans 写了 Domain Driven Design,试图为业务开发提供一套架构指导方案。
这本书国内 2016 年引入,书中概念居多,晦涩难懂,翻译更是让它雪上加霜,我想译者自身也是缺乏对 DDD 的正确理解。
英文原作: https://book.douban.com/subject/1418618/
中文译本: https://book.douban.com/subject/26819666/
2013 年,Vaughn Vernon 编写 Implementing Domain-Driven Design 一书,中文译作<实现领域驱动设计>(2014 年出版),为 DDD 开发实践提供了更接地气的指导,这一本书翻译仍然不尽人意,需要对 DDD 有一些了解,否则读下去会不知所云。
英文原版: https://book.douban.com/subject/11940943/
中文译本: https://book.douban.com/subject/25844633/
回归本质,所有的软件开发方法,都是希望用最小的人力成本来满足构建和维护该系统的需求,让系统又稳又快,功能稳定 bug 少,同时又能适应软件的不确定性。
Robert C·Martin 编写 Clean Architecture,国内译本<架构整洁之道>,重提 SOLID 原则,从架构层面再次探讨系统开发,DDD 也不过是面向对象的一种开发思想,终极目标就是最大化发挥工程师的生产力,算是一本走向架构师必须要读的书。
英文原作: https://book.douban.com/subject/26915970/
中文译本: https://book.douban.com/subject/30333919/
last but not least
还有很多关联的代码设计的书,如代码整洁之道(clean code),敏捷软件开发:原则,模式与实践
以及如何搭建可靠的系统,微服务设计,各种大型网络设计书等
这里更多的关注是:
如何利用建模与面向对象的思想更好的编写业务代码
很多人喜欢捆绑微服务去谈 DDD 的好处,然后快速堆出来 DDD 的各种概念
大可不必,须知 DDD 只是一个方法论,重要的是背后的思考
DDD 和微服务也没有必然关系,DDD 不是银弹,只是一种更能表达业务的 better code
版权声明: 本文为 InfoQ 作者【陆乘风】的原创文章。
原文链接:【http://xie.infoq.cn/article/52b73c401fdbe670c018afa02】。文章转载请联系作者。
评论