1
Glauben 307 天前 5
作为一个被忽悠着研究 DDD 一两个月的,我的评价是这玩意儿就是拿一堆高大上的词汇忽悠老板的。
可能最开始实行的公司符合他们的业务吧,在我研究了一段日子后,这玩意儿离银弹差了十万八千里,请教过一些所谓的 DDD 大佬,遇到他们业务之外的东西,他们也不知道怎么写才好。 在不同的公司 DDD 的理论都不一样,根本没有一套通用的架构。想要把自己的业务生搬硬套在那些个大厂宣传的 DDD 中简直是地狱,回头是岸。 |
3
RedBeanIce 307 天前
我司是个小公司,我司在推行 DDD ,主动推进的人之前也在另外一个公司推行 DDD
每个公司落地 DDD 都不一样,我司技术栈很奇怪,所以落地的也很奇怪。 但是确实是朝着 DDD 的目标进发。 |
4
sky3hao 307 天前
说明你压根没有入门, 也可能你环境不利于你入门.
真正掌握了 DDD, 其实你不会想回去走老路的 |
7
sky3hao 307 天前
即使你跟一个不懂 DDD 的产品沟通任何非 DDD 的设计, 你也可以写出 DDD 的代码来. 难还是技术
|
8
BeautifulSoap 307 天前 1
不是所有人都赞同推广的时候,要推 DDD 就别说自己是在用 DDD ,而是潜移默化地推。
通用语言,领域专家、边界这东西,不去专门了解谁知道是啥,大家也不会乐意跟你多学这些东西 如果你是管项目的话,直接跟客户还有组员说,因为开发团队和客户之间经常关于名词有不一样地认识导致开发出错,所以我想统一一下名词,我这里根据客户地叫法整理了一个“名词表”,你们看看有没有意见,今后就按照这个名词来推进项目。组内有人用错名词的话就主动纠正他让他用正确的叫法。至于客户那边,如果你没法改变客户的叫法那通用语言就完全按照客户叫法来调整 至于领域专家,直接就跟客户说我需要你们那提供一两个能和我门对接,解答我们疑问的熟悉业务的人,只字别提什么“领域专家” 至于拆领域,找核心领域,子领域之类的,边界之类的的名词更是只字别提,直接就让客户给你讲讲业务范围,业务内容,然后你把业务问详细了,自己画几个图,美其名曰“业务构成图”,下次会议把疑问和图给客户看看有问题就提,没问题的话留下证据,顺便今后扯皮时还能甩锅给客户 这一套下来你就会发现,DDD 其实也没那么操蛋,当然这一套下来这叫不叫 DDD 是个问题了 |
9
zzNaLOGIC OP @BeautifulSoap 实操下来确实会发现,这套东西确实太理想化了。这玩意想搞下来对业务部门与技术部门沟通、业务部门人员本身素质要求还是比较高的(有部分业务部门其实本身也是浑浑噩噩的,没有流程没有标准,但由于不像技术部门后果呈现这么明显,一般也就非标特殊化处理完就过去了,在这种情况下部门业务想确定边界根本是无稽之谈,更别提后续的架构设计了)从上到下遇到的问题综合起来,技术反而是最简单的,因为可确定、可量化、标准易定。
你说的方法确实是后期实操的方案,这也是逼不得已。目前的落地情况,已经不是怪异可以形容的了。当然怪不怪异不重要,重要的是能解决问题,但实际上。。。变异后的情况已经有些偏离设想的道路了。哎,也不知道是福是祸 |
10
Mithril 307 天前
@BeautifulSoap 同意。叫不叫 DDD 无所谓,只要比现在一锅粥的架构强,那就有实践的价值。
很多东西完全按理论走结果肯定是最好的,但成本也不一定是所有人都能接受的。包括开发成本,人员的培训成本,PM 和客户的额外沟通成本等。 比如 Restful 设计,很少会完全按照它来设计 API 。但它的思想是好的,借用到项目里能有改善,那就值得去学习和尝试。 |
11
NoNewWorld 307 天前
DDD 的一些编程思想还行,完全推太难了,而且没必要,没有银弹,DDD 也不会是银弹。
|
12
jamosLi 307 天前
有没有可能任何事都是“开干”而不是“开会”?
任何一个公司都基本不存在重构一说。能从基础开搞就从基础开搞,不能就是敏捷套 DDD 的搞,一顿乱喷的只能说是你自己本身无能。 |
14
u4zada 307 天前
我们已经落地 DDD 两年了,有做的好的工程,也有做的不好的。你不能光把 DDD 的概念往项目上生搬硬套,否则很容易跑偏
|
16
unregister 307 天前
感觉.net 以前有很多 d d d 相关的
|
17
troywinter 307 天前
当你的业务足够复杂以后,你会发现 ddd 的一些优势,当七八年以后你再回过头来看你现在想法,也许会有不同的认识,当然在国内系统不考虑任何可维护性可迭代性的情况下,完全靠堆人解决问题,也许确实不需要 ddd
|
18
GoflyYang 306 天前 via iPhone
我写了一个星期 DDD 被太多名词困扰 简直没有耐心看了
|
19
jonsmith 306 天前
之前大略看了 DDD 书籍的目录,庞大且复杂,还没来得及专研。技术架构要与公司相匹配,硬推估计不行。
|
20
xuyankang 306 天前
DDD 还是相当有价值的,要实践好不容易,对人要求很高。
我对 DDD 的理解,其本质就是充血模型的编程,核心在各个概念的抽象。概念抽象好了后,自然边界就出来了。不要拘泥于各种 XO 的转换,不要拘泥于教科书的分层,关键点在于要理清你的逻辑是“依赖什么的”,如果 A 依赖 B ,那么 A 其实不是独立存在,B 的东西直接用就行,没必要再搞个防腐层。 另外,DDD 一般架构师搞搞就行了。我一般都是把所有核心的类和方法设计好之后,然后让大家在“框里”写代码就好了。 |
21
abz 287 天前 via Android
从业务到模块到类,一个原则,高内聚低耦合,单向依赖,这是大原则,至于怎么实现,每个人有每个人的途径!做好以上,都叫 ddd 。
|
22
abz 287 天前 via Android
单向依赖说一下,无论在域层面,模块层面,还是所谓的 ddd 分层层面,都要注意这个原则。至于战术层面,所谓聚合根就是高内聚的一种表现。ddd 的初衷是为了持续性的维护,它必然遵守高内聚低耦合这一最本质的原则。所谓的分层所谓的依赖倒置,单向依赖而已,这两个本质贯穿始终。仓库也是一样,不必纠结 save 还是 update.哪个习惯用哪个,只要和领域层不耦合在一起,保持领域层的稳定性就行。
|
23
abz 287 天前 via Android
我这么一说,其实就很简单了。
|
24
abz 287 天前 via Android
ddd 无所谓项目简单与复杂,只不过复杂的项目即便你不用 ddd 一样也很复杂,简单的项目简简单单实现就好。关键你要知道怎么用 ddd ,就是高内聚低耦合,单向依赖。再加个业务专家,一切水到渠成。即便没有业务专家,按照这个原则实现出来的项目也不会差。
|