DDD 为什么火不起来?

2020-04-23 20:25:59 +08:00
 Hanggi

DDD 贴链接:维基百科

最近隐约能听到有人谈起 DDD,或者有人尝试 DDD 之类的话题。

DDD 作为一种架构模式,无关何种语言或者框架,但是真正为 DDD 而设计的框架或者以 DDD 为吸引点的框架几乎找不到。

与此相类似的还有 Graphql,虽然出来了也没有多少年,也并没有特别流行,但至少会发现很多服务端框架都开始支持 Graphql 了。

DDD 到底有没有用,到底有谁在用 DDD 模式呢?

15193 次点击
所在节点    程序员
83 条回复
Jooooooooo
2020-04-24 12:48:53 +08:00
你上大公司就会发现还是很多的
hantsy
2020-04-24 12:53:49 +08:00
@matrix67 Eric 的 DDD 原书是一个 Spring 写的物流跟踪系统,https://github.com/citerus/dddsample-core

Java EE 6 开始移植了这个程序,使用纯 Java EE/Jakarta EE 重写,https://github.com/eclipse-ee4j/cargotracker

还有其它各种框架,模式实现(包括 Microservice )的版本,自己搜索 Github 。
hantsy
2020-04-24 12:59:22 +08:00
DDD 是一种比较接近实战的软件开发理论,在 DesginPattern 之上,但又没有 SOLID 那么空洞。不管是企业开发,还是现在互联网的 Microservice,DDD 非常实用。特别是处理 BoundedContext,是传统 Monolithic 程序向 Microservice 迁移时,架构设计时必要分析步骤。
Rwing
2020-04-24 13:03:29 +08:00
要求团队整体水平比较高吧
a194259440
2020-04-24 13:04:45 +08:00
携程再用啊,我们公司也在用。
hantsy
2020-04-24 13:15:20 +08:00
@xiangwan 国内开发基本都是数据驱动的,所以国内还是重视写 SQL 之类的。
hantsy
2020-04-24 13:18:50 +08:00
@zclHIT 能够用 TDD 和 Pair Programming 基本都是外企和有硅谷文化的小公司。国内所谓的大厂,呵呵,真正有一些好的开发实践几乎为零(除了一两个零星的团队,也是外来的和尚建立的),吹牛逼远超国际大公司。
momocraft
2020-04-24 13:26:52 +08:00
印象里在会议看到的讲 DDD 的不少是来自开发分散的,需求模式极多的业界
比如广告竞拍
momocraft
2020-04-24 13:35:08 +08:00
至于“为什么没有 DDD 的框架”
以我的理解 DDD 不是一个语言或标准,是一套指导分析到开发的方法论

在 DDD 开发的应用可能有下级的单位 (比如规则引擎,比如 domain 的各种 util ),但很难有共通的基础。我怀疑能抽取出框架的工作可能不那么需要用 DDD 。
hantsy
2020-04-24 14:07:09 +08:00
上面提到的 Java EE/Jakrata EE 版本的 CargoTracker 文档,https://cargo-tracker.gitbook.io/documentation/ 由于 Java EE 移交到 Eclipse,所以整个 Java EE 项目地址,名字也变化了两次。
ayavvv
2020-04-24 14:22:17 +08:00
DDD 难道不火吗???我们这边全都是 DDD
index90
2020-04-24 14:59:55 +08:00
DDD 是方法论啊,不是什么架构模式啊,也不是什么框架啊。你连 DDD 是什么都没了解清楚,当然不知道它用在什么地方啦。LZ 自己贴的维基百科,估计自己都没认真细看吧。
cs419
2020-04-24 16:30:31 +08:00
ddd 一直都是不温不火的 大部分人应该都是摸着石头过河
帖子里说公司一直在用 ddd 的不少
不过这些 ddd 差异大吗

有点好奇这些是不是盲人摸象
pangleon
2020-04-24 16:35:20 +08:00
正经研究过一点时间 DDD 的人,因为当时做微服务遇到了拆分的问题。
后来掌握了事件风暴。
但是对 DDD 的代码级实现完全不看好。
反人类。
这东西足够好早火了,玩家都是用脚投票的,就像敏捷,吵吵这么多年了不还是这个德行,为啥?不好用啊
hantsy
2020-04-24 16:59:53 +08:00
@pangleon 跟大环境有关,不是好不好用的问题。中国公司都是急功近利,都是太过早的关注结果,而在一件事反复多少次都没一定论,造成大量时间浪费,而这些时间浪费一般公司都不会在意(加班 996 嘛 )。上面链接有提到盒马的一篇实践文章,这文章本身我个人觉得没有什么太多价值,而且有一定的误导性,(如果出于学 DDD,应该读读下面 Thoughtworks 的链接),但其中一句描述很真实,中国公司(包括大厂)都是面条代码,一条线捅到数据库,思维上简单粗爆,根本就没有上升到真正的 Domain (就是问题本身),大部分开发都是业务出发就搞数据库,用了 OOP 语言或者框架,但架构设计和代码实现上完全脱离 OOP 原则。这样的结果是,你用了上好的食材,本来是应该一桌满汉全席,结果是出来的一锅重庆火锅。

为什么国内一些公司缺少 Domain Expert,真正从 Domain 出发思考问题,从产品角度考虑在很多公司都是执行不下去的。很多公司都是以老板看法为中心,马屁精一堆,根本就没有从业务问题出发去分析,而是看老板的喜爱。当然这是千年中国传统文化了。
jack2020
2020-04-24 17:09:23 +08:00
@charlie21 看完了,文章不错!“所有的复杂变态查询其实都应该绕过 Domain 层”很有感触。Django 框架很好的实践了 DDD
redbelt
2020-04-24 17:30:39 +08:00
看了大家的回复,结合我自己的感受,结论是:DDD 乃真屠龙宝刀也!
pangleon
2020-04-24 17:39:35 +08:00
@hantsy 来来来一起说道说道这个,当时看 DDD 的时候也是搜到河马,美团有在用,可是那个文章写的,隔靴搔痒一般好不痛快。我们代码层级多少人习惯了贫血模型你让他改,他所有的代码你都得 REVIEW,累都累死,再一个万物皆事件这个事产品经理也不干啊,很多场景就是要个实时反馈。
现在 DDD 的门槛在这,哪个 LEADER 敢打包票我花一段时间带团队学能搞定搞定后为公司做贡献。不是人人都想搞这些,人家想的都是微服务好出去面试。
这就相当于国足的青训做的不好,你还怎么指望出人才?出成果?
领域专家这个更蛋疼,这年头都 35 岁裁员了,还专个毛啊,有个笑话就是华为海外项目经理大都是年轻人,靠能拼打天下,结果一看其他外国公司都是上了年纪的,大形势如此。
敏捷这玩意就是反人类在觉得团队各个都是人才,说话有好听,做事又靠谱。
都是虚的,取其精华而不能全都拿来就用,东施效颦。
charlie21
2020-04-24 18:02:07 +08:00
@pangleon 更常见的说法是 “庙小盛不下大佛”,大佛就是 DDD
kyuuseiryuu
2020-04-25 00:16:30 +08:00
Deadline-Driven Develop [ok]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665465

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX