V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xing4576
V2EX  ›  程序员

DDD 是不是已经死了?

  •  
  •   xing4576 · 21 小时 26 分钟前 · 7214 次点击

    最近在重构老项目,想问一下现在还有没有必要用 DDD 那套来重构呢? go 语言加 DDD 配合 ai 变成会不会有意想不到的效果?

    第 1 条附言  ·  20 小时 7 分钟前
    感觉好像确实没必要为了复杂而复杂,虽然 ai 可以生成很多东西
    56 条回复    2026-03-21 00:11:55 +08:00
    imesrdfi8dzs
        1
    imesrdfi8dzs  
       21 小时 15 分钟前
    最近都是 AI AI AI,好久没听过 DDD 一词了.
    gy0624ww
        2
    gy0624ww  
       21 小时 7 分钟前
    有 AI 应该利好 DDD ,TDD 这种
    因为麻烦的测试用例不用你写了,DDD 分层也不用你写了
    Desdemor
        3
    Desdemor  
       21 小时 4 分钟前
    这是一种架构方式啊,跟 ai 有啥关系,这俩可以重合。ai 做好 TDD 是真的方便
    weixind
        4
    weixind  
       20 小时 59 分钟前
    我之前的看法是:“领域优先( Domain-First )+ 自包含( Self-contained )的组织方式大概率会取代传统分层架构。”

    现阶段的 AI 生产力下,这个演进方向应该没啥问题,AI 再快速发展一两年,可能就不太适用了。
    sky3hao9
        5
    sky3hao9  
       20 小时 59 分钟前
    我现在认为 DDD 是一种编程思想, 跟有没有 AI 没多大关系, 会的仍然会使用, 我个人来说开发个新东西, 会先从实体和领域角度考虑, 按照业务扩展领域方法, 所依赖的都由接口约定. 最后去实现这些接口, 最后才会到建表,字段这些东西. 我觉得这种开发模式非常清爽
    liuzimin
        6
    liuzimin  
       20 小时 59 分钟前
    我还以为是恶魔的破坏🤣
    hrzlvn
        7
    hrzlvn  
       20 小时 58 分钟前
    ddd 反而是最好的方案吧,面向过程贫血的代码以后都会是个坑,可惜你要用 go ,否则有个 tocoai 原生支持 ddd ,不过他们只出了 java 版
    rocmax
        8
    rocmax  
       20 小时 56 分钟前 via Android   ❤️ 1
    怎么可能利好 ai 编程,ddd 一堆中间层得给 ai 搞迷糊了,运行时注入的框架都没法跳转到定义你让 ai 怎么理解代码。
    lujiaosama
        9
    lujiaosama  
       20 小时 56 分钟前
    我也在重构项目, 拷打了 AI N 遍之后, AI 让我用 分层架构 + 轻量 DDD. 复杂业务建模使用轻量 DDD. 纯 MVC 太容易整出一坨胖 SERVICE 了.
    hrzlvn
        10
    hrzlvn  
       20 小时 53 分钟前
    @rocmax 看项目规模,太小了用啥都一样,有些架构不是为了当天的易读,不过的确也没有免费的架构,都是有代价的
    midsolo
        11
    midsolo  
       20 小时 44 分钟前
    正在用公司内部的 DDD 框架:"菱形架构 + 南北网关 + case 编排 + 全局适配",一个对象在不同的层级被转来转去,复杂的业务流程中要复制十几个,AI 都被绕晕了
    putaozhenhaochi
        12
    putaozhenhaochi  
       20 小时 32 分钟前   ❤️ 1
    就没活过
    zhuanggu
        13
    zhuanggu  
       20 小时 30 分钟前
    现在是 SDD
    Ketteiron
        14
    Ketteiron  
       20 小时 26 分钟前   ❤️ 1
    在 java 之外的语言强行上 DDD 只能说是没事找事嫌业务不够复杂。
    vincentWdp
        15
    vincentWdp  
       20 小时 25 分钟前
    我老了, 天然排斥没见过的模式, 所以我认为 ddd 就没活过
    Nzelites
        16
    Nzelites  
       20 小时 24 分钟前
    ddd 这种罗里吧嗦的模式最适合 ai 去生了 不是说 ddd 不好 是虽然维护的时候好很多 但是写起来确实麻烦 心智负担重一些
    jackOff
        17
    jackOff  
       20 小时 22 分钟前
    现在老大要求禁止过度设计模式,意思就是代码不能写太抽象,必须新人能看懂,啥意思大家都明白
    lologame
        18
    lologame  
       20 小时 22 分钟前   ❤️ 3
    DDD 本身就是伪科学,倒果为因,实现驱动设计,纯扯淡
    xing4576
        19
    xing4576  
    OP
       20 小时 7 分钟前
    @Nzelites 我也感觉是这样的
    junwind
        20
    junwind  
       20 小时 7 分钟前
    @jackOff 禁止你们防御性编程。
    xing4576
        21
    xing4576  
    OP
       20 小时 5 分钟前
    @lujiaosama 现在的业务就是 mvc ,service 一大坨
    arthas2234
        22
    arthas2234  
       20 小时 4 分钟前
    谁说 DDD 不适配 AI 的,我让 AI 帮我加个字段,好家伙从 client 层一直扫到 infrastructure 层,花了我不少 token ,AI 厂家笑嘻了。建议所有厂家都给自家 AI 训练成用 DDD 开发
    leegradyllljjjj
        23
    leegradyllljjjj  
       20 小时 1 分钟前 via iPhone
    DDD 本来就是为微服务设计的,微服务诞生以后 DDD 才发挥出真正的意义,之前一直都是一种建模工具,对实际的架构设计屁用没有
    beiyanpiki
        24
    beiyanpiki  
       19 小时 42 分钟前
    AI 还是 DDD 好,MVC 一大坨 service 找上下文都困难
    luobingit
        25
    luobingit  
       19 小时 42 分钟前
    只知道现在有 AI 后 岗位 JD 上面基本没出现 DDD 了 都是 vibe coding
    zhady009
        26
    zhady009  
       19 小时 42 分钟前   ❤️ 1
    KISS 模块内聚才是王道,DDD 纯给大家找麻烦
    darksword21
        27
    darksword21  
    PRO
       19 小时 27 分钟前
    面条代码才是最好的!
    bololobo
        28
    bololobo  
       19 小时 26 分钟前
    https://soulhacker.me/posts/good-code/


    通过以上的分析,我们可以得到如下判断:
    软件开发的基本范式还没有大的变化,软件工程中的核心问题(渐进式定义、复杂度控制、测试与验证)依然是我们面对的主要挑战。
    本文前半部分的定义和定理体系仍然成立,只在一些具体细节上需要进行新的解读。
    进入 Coding Agent 时代后,通过良好的代码架构来控制复杂度仍然非常重要,仍是最具效率的最佳实践;代码可读性和文档化的要求甚至高于过去;而对软件系统的测试与验证是亟待创新与突破的领域。
    如此看来,在这个新的时代,好代码的标准并没有太大的变化;未来可能最大的变化是通过更可靠、高效的测试验证系统取代细致的代码评审,从而可以在软件系统总体复杂度受控的前提下忽略对代码细节的追求。


    既然 "良好的代码架构来控制复杂度仍然非常重要", 那么达成这一目的的 DDD 自然也仍然非常重要.
    thtznet
        29
    thtznet  
       19 小时 16 分钟前
    个人观点,AI 的最终形态将覆盖掉任何的设计模式。因为设计模式的产生本身就是为了人能更好的编写和测试代码,而 AI 对解决问题的代替作用,将逐步迁移到人类只需要关注 AI 解决问题的结果,中间过程,包括所谓的设计模式,都无关紧要,除非某些解决问题的过程中,仍然需要有人工协作,才可能保留一部分所谓的"设计模式"。
    kakki
        30
    kakki  
       18 小时 41 分钟前
    真以为 AI 不需要抽象层啊?直接写二进制.
    Gilfoyle26
        31
    Gilfoyle26  
       18 小时 28 分钟前
    有 Ai 了,还要什么 DDD ,直接 Ai 一把梭,早下班不好吗
    karmaisbitch
        32
    karmaisbitch  
       17 小时 55 分钟前
    凉了
    momo2789
        33
    momo2789  
       17 小时 47 分钟前
    感觉从来没活过,领域有很多形式可以表达
    doodle123
        34
    doodle123  
       17 小时 44 分钟前 via iPhone
    @jackOff 增加每个人的可替代性
    lmmlwen
        35
    lmmlwen  
       17 小时 43 分钟前
    DDD 和微服务已经被时代所淘汰
    doodle123
        36
    doodle123  
       17 小时 42 分钟前 via iPhone
    DDD 是为人服务的,不是为机器服务的,以后 ai 主导编程,人类参与变少,自然也不需要 DDD 了
    irrigate2554
        37
    irrigate2554  
       17 小时 39 分钟前
    感觉 TDD 还挺适配 AI 的,DDD 就拉到吧,本来就没啥用的东西。
    rossroma
        38
    rossroma  
       17 小时 34 分钟前
    现在应该是 ADD ,AI Driven Design
    lujiaxing
        39
    lujiaxing  
       17 小时 30 分钟前
    我个人认为是的. 什么 D 不 D 的, 在 AI 面前都属于废话. AI 生成代码就是突出一个糙猛快. 而且我们之所以用各种那个设计模式各种设计思想, 归根结底还是方便人类去维护. 但是现在都是 AI 去搞了, 屎不屎山的关我开发屁事? 屎山也是 AI 去爬不是我爬. 我管你那么多呢. AI 想怎么写就怎么写, 怎么快怎么来. 只要能实现功能, 把所有代码都写在一个文件里都 OK.
    JoeSmith
        40
    JoeSmith  
       17 小时 5 分钟前
    还以为你说的是这个古董 https://www.gnu.org/software/ddd/

    不过人家古董 2026 年还在更新
    zhuhaohenry
        41
    zhuhaohenry  
       16 小时 52 分钟前
    DDD 对于 AI 有天然的优势啊, 层级清晰,足够单一职责,有上下文约束。AI 可以用极少的上下文就知道怎么去修改代码了,再加上 TDD, 就是绝配。
    SoviaPhilo
        42
    SoviaPhilo  
       16 小时 48 分钟前
    除非做好了每个迭代重新全量生成的准备,否则 DDD 应该还是现在 LLM context length 有限的情况下的一个比较可行的解决方案。至于什么时候更新一个版本就全量重做, 我估计还很远,因为这个 token 还蛮贵的,多的 token 多写一些稳定的业务不行吗
    hrzlvn
        43
    hrzlvn  
       16 小时 47 分钟前
    看了楼上很多说 ai 找不到 ddd 字段的,你们去翻翻 tocoai 这个玩意,有点启发的,我也是醉了,这年头关键是找工具,倒不是说理论适不适合,你写一坨让 ai 去找,他又不是神仙。如果你说平血+过程也能跑的很好,而且你也是大系统,就当我没说哈哈,你的 ai 比较牛逼
    hrzlvn
        44
    hrzlvn  
       16 小时 44 分钟前
    @lujiaxing 你牛,反正明年又是一个新公司,新项目
    hrzlvn
        45
    hrzlvn  
       16 小时 41 分钟前
    应该这样问,22 世纪了,有 ai 了,是不是 100 张表放在一个模块,同一个文件最好,因为上下文长度有 1G 了:)
    MelodYi
        46
    MelodYi  
       16 小时 13 分钟前
    VibeCoding 感觉上是利好 DDD 的。
    但是说实话,“软件工程”相关的东西,感觉新时代都要大换血,会不会有别的不好说。
    unused
        47
    unused  
       16 小时 5 分钟前
    以后 AI 提需求出结果就行了,不需要 drive ,更不需要 design
    lujiaosama
        48
    lujiaosama  
       15 小时 49 分钟前
    我让 GPT 加入了讨论, 它说这里有 用过一点 DDD / 被坑过 + 把 DDD 当代码组织方式 + 理解“复杂性控制”本质这三类人.看起来还是孜孜不倦的推销 DDD.
    lixintcwdsg
        49
    lixintcwdsg  
       15 小时 43 分钟前
    这本来就是不应该存在应被发明出来的东西,java 这一行做 toB 企业咨询的公司,为了给自己提高溢价,看起来“专业”,发明了很多方法学和概念。但是实际在互联网上做 ROI 落地变现,不能说是毫无作用,但是作用基本没用。
    我是用了 java 快 20 年的人,为这句话负责。
    只要你觉得听起来高大上,理解起来有点儿费劲儿,实际用起来别扭的东西,不好怀疑,都是这类。
    restful 这些也类似,spring security 这种复杂设计也是如此,过去的 ejb 就不说了。
    acerphoenix
        50
    acerphoenix  
       15 小时 20 分钟前
    DDD 其实随着 java 被 go, c#, python, nodejs 等蚕食服务端市场时,就已经江河日下了. DDD 在 java 里还是不错的,尤其行业复杂业务场景. 但其实 go, python, nodejs 一把梭, supabase 等高效开发用效率弥补复杂设计, 拆的细点, 也很能打.
    smileeast
        51
    smileeast  
       14 小时 24 分钟前
    其实还是控制复杂度,如果复杂度不高,那么怎么写都行,复杂度高,那什么框架和思想都不行,很多时候我们习惯加功能,但是功能越多越难维护,最后一点改动都会导致系统不可维护。
    visper
        52
    visper  
       14 小时 23 分钟前
    以前听过这个名字。不知道是什么,刚才问了下 AI.AI 说把 service 的业务逻辑放在 entity 里面就是 DDD.
    gjinin
        53
    gjinin  
       12 小时 59 分钟前
    TDD 适合 AI
    redbule
        54
    redbule  
       12 小时 43 分钟前
    DDD 还是很适合微服务背景的
    skyyan
        55
    skyyan  
       12 小时 25 分钟前
    古法编程吗
    HappyAndSmile
        56
    HappyAndSmile  
       6 小时 58 分钟前
    AI 只合适粗暴平推代码
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:10 · PVG 07:10 · LAX 16:10 · JFK 19:10
    ♥ Do have faith in what you're doing.