[答疑]同事在B站看DDD直播学来“创新”,怎样应对

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


蜗牛 2025-12-24 14:47

同事和我争论,认为订单、商品里面不应该有逻辑,应该把逻辑放在管理类中,和现实对应,这是真正的面向对象。我问他哪里来的观点,说是B站看DDD直播和视频学的。

我推荐了您的书,他说没必要看,每种观点都有它的道理,挑选自己适合的就好。

想到您说过的挑脓包,这种应该从什么角度去挑?

UMLChina潘加宇

这就是 《软件方法》1.5.2 不学有术 中说的内容:不学习却能大量输出。

捅破这个脓包,有一个办法,对伪创新卖家和买家都有效。

不用和他争论逻辑放在哪里的问题,就给他某个不太偏门的领域的某本教材,让他挑某一部分,用类图的类和关系描述出其中涉及的概念,至少画10个类,只需要结构,不需要行为。

如果他说不喜欢用类图,可以画ER图,也可以在数据库管理工具里画数据模型图。

如果他说就不喜欢画图,可以用代码写出各个类的内容,或者用SQL写出各个表定义的内容,反正也可以逆向成图。


伪创新卖家和买家缺乏基本建模能力的脓包大概率会暴露,因为如果他们真的能做好这一点点,估计也就不会相信之前自己瞎掰的那些东西了。


最后,摘录《软件方法》中的相关知识:

第2章

这里顺便谈一下面向对象初学者的一个常见错误(包括不久前刚批评的一个领域驱动设计创新“宏论”)。例如,研究一个烹调软件系统,这个系统里面有哪些类呢?有的人会认为系统里有一个“厨师”类,封装了烹调的逻辑。他这样想的理由是,如果没有这样的烹调软件系统,烹调的逻辑是放在厨师的人脑里。

根据上面的剖析,厨师对应的这个人只是一个容器。这个人之所以会烹调,不是因为他是人(我也是人,我就不会烹调),而是因为他的人脑里安装了“厨师”系统,这个“厨师”系统和以计算机为容器的“烹调软件”是对等的。

输入一个信息“宫保鸡丁”,人脑中的“厨师”系统为什么能想到一个烹调的流程,然后按照流程指挥他的手脚以及各种设备烹调?回答“因为系统里有一个厨师类”、“因为他是厨师”虽然很有投资少、见效快、产量高的领域驱动设计风味,却是没有意义的,有意义的回答是“因为系统(即厨师)知道菜品-制作步骤-食材之间的关系”。

同理,输入一个信息“宫保鸡丁”,计算机上的“烹调软件”系统为什么能输出一个烹调的流程,甚至能按照流程指挥电子烹调设备来烹调?回答“因为系统里有一个厨师类(烹调软件类)”也是没有意义的。有意义的回答是“因为系统(即厨师)知道菜品-制作步骤-食材之间的关系”。

实际上,人脑中的“厨师”系统中可以没有“厨师”类。厨师只要记得菜品-制作步骤-食材,忘了自己姓甚名谁并不妨碍烹调。同理,“烹调软件”也可以不需要厨师类,因为它不记住厨师的信息,不影响它输出烹调的流程。

注意:

(1)是“可以没有”。如果有需要,“厨师”或“烹调软件”当然可以记住厨师以及他和其他几个概念之间的关系。

(2)注意区分“厨师”和“(供)厨师(使用的)界面”。

第8章

实际上,当前的绝大多数信息系统中,和现实中有生命的“人”对应的类,与其相关的逻辑所占比例非常少。承担系统关键责任、封装复杂逻辑、我们需要为之画出复杂状态机的类,往往在现实中对应的是无生命的事物,例如“订单”、“设备”、“房间”等。

即使将来信息系统发展到更高复杂度,“人”相关的逻辑所占比例依然会很少。人类建造的信息系统,封装的是人类对宇宙万事万物(当然包括人类自身)的认识或想象,而人类自身(甚至包括其他生命体在内)的内容在这宇宙万事万物中能占多少比例呢?

另外,如果在信息系统中,人的状态机非常仔细,那就意味着人的各种自然属性和社会属性的各种细节都被信息系统掌握,这到底是福是祸?参见Westworld(西部世界)、The Matrix(黑客帝国)等影视作品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值