手把手教你落地 DDD
钟敬
Thoughtworks 首席咨询师、数字化转型与运营团队 DDD 负责人
19697 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 45 讲
AIGC特别策划 (2讲)
结束语&结课测试 (2讲)
手把手教你落地 DDD
15
15
1.0x
00:00/00:00
登录|注册

结束语|DDD,是技术也是艺术

你好,我是钟敬。
在不知不觉间,我们的课程已经接近尾声了。几个月来编写这门课的经历,既是对智力的淬炼,也是对体能的挑战。能够坚持至今,少不了你和其他小伙伴的支持。
在课程即将结束的时候,我又想起了开篇词里说过的这句话——“DDD 不仅是一门技术,更是一门艺术”。今天,我们就来聊聊技术和艺术吧。
“技”和“艺”有时不容易严格区分。不过相对而言,技术更偏重逻辑和套路。要么可以通过逻辑推导出来,要么可以通过套路一步一步地做出来;而艺术更侧重于经验、洞察、甚至审美。
不过,软件开发的审美不是与生俱来的,而是要经过后天的训练习得。就好比,一个数学家看到欧拉公式(见下图),会觉得很美,但没有经过数学训练的话,可能就无感了。
能够把技术和艺术结合起来,是优秀架构师的基本素养,也是学好 DDD 的关键。软件开发作为一门“技术”比较好理解,那么怎么理解其中的“艺术”呢?咱们就说三个方面吧:权衡的艺术、抽象的艺术、抓住本质的艺术。

权衡的艺术

我发现有些小伙伴对于软件开发中的不同选择,常常抱有非黑即白的思想。用 Java 还是 PHP?当然是 Java。用面向对象还是贫血模型?当然是面向对象。用 JPA 还是 Mybatis? 当然是 Mybatis……
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

DDD,是技术也是艺术 在这篇文章中,作者钟敬以“DDD,是技术也是艺术”为题,分享了对技术和艺术的思考。他指出,软件开发不仅是技术,更是一门艺术,技术偏重逻辑和套路,而艺术则侧重于经验、洞察和审美。他强调了架构师需要将技术和艺术结合起来,以及软件开发中的“权衡的艺术”、“抽象的艺术”和“抓住本质的艺术”。 在“权衡的艺术”方面,作者提到了架构师需要谦卑地分析和权衡,以做出更好的决策。他介绍了架构决策记录(ADR)的方法,以便进一步优化和演进。在“抽象的艺术”方面,作者强调了抽象能够更准确地理解业务,同时也带来更灵活的软件设计,但抽象程度的选择是一个艺术问题。在“抓住本质的艺术”方面,作者指出DDD解决的是软件开发的本质问题,而人工智能编程目前解决的仍然是软件开发的非本质问题。他鼓励读者学习DDD,因为通过可视化、抽象化、严格化的方法建立领域模型的艺术,仍然无法被人工智能取代。 总的来说,这篇文章通过对技术和艺术的思考,强调了软件开发中的艺术性,并鼓励读者在技术和艺术的交汇处不断探索、学习和成长。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手教你落地 DDD》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 扶程星云
    非常感谢老师的分享,第一次读完,很多地方懵懂,我会不断重复拜读佳作!

    作者回复: 共同进步!

    2023-07-28归属地:江苏
    1
  • 无问
    钟老师 golang有什么参考的ddd项目吗

    作者回复: 我对Go不是很熟,可以参考下面的文章: https://mehdihadeli.github.io/awesome-go-education/ddd/ https://programmingpercy.tech/blog/how-to-domain-driven-design-ddd-golang/ https://www.calhoun.io/moving-towards-domain-driven-design-in-go/

    2023-06-21归属地:上海
    2
  • Sam Jiang
    技术也需要洞察力,但是艺术需要想象力。 学这门课让我开了眼界,发现曾经困扰自己的问题,已经有人想出了解决方法。并不是人类一思考,上帝就发笑。感谢钟老师。

    作者回复: 共同进步!

    2023-03-12归属地:上海
  • quietwater
    老师能加餐讲讲三元关联吗? 我说说我的猜测:比如一个用户在一个系统里,可以访问两个不同的企业里的数据,在一个企业里的角色是管理员,在另一个企业里的角色客户。这里的业务逻辑就是三元关联,一个用户在不同的企业下,角色不一样。

    作者回复: 这个理解是正确的。企业,用户,角色,三者构成了三元关系

    2023-03-11归属地:北京
  • aoe
    收获很大,看了钟老师在之前文章中提到的「低配版」DDD,对坚持学习起到了很大帮助。在工作中恰好遇到了「项目管理」的问题,正在使用 DDD 开发一个项目,帮助解决问题。这是一个练习项目,等第一版完成后,分享出来和大家一起讨论。 感谢钟老师带我入门 DDD !

    作者回复: 你的学习态度和学习方法都很棒,在实践中遇到什么问题可以继续在群里或者留言区探讨。

    2023-03-10归属地:浙江
    2
  • hacker time
    实际项目不会只有一个应用,在自己的项目中实践这门课时遇到的问题是有2个应用,一个是微信小程序,一个是后台管理系统,不知道怎么组织代码目录结构了,2个应用都有自己的restful和repository实现类,2个应用的功能有相同的有不同的,领域模型建模时建了一个包含从两个应用来的所有逻辑,但是repository接口只在domain层,导致两个应用的repository实现类里面的方法有的是空方法,而如果为2个应用在domain层建立自己的repository接口,又会导致领域逻辑不包括来自2个应用的所有逻辑,这样领域逻辑就不完整来,导致不知道怎么建模了?是每个应用单独建模吗?可是它们是一个系统里面的2个应用啊,怎么能单独建模呢?

    作者回复: 这个问题,可能是限界上下文拆分问题,也可能是同一个上下文内的建模技巧问题,还可能是代码实现技巧问题。只能对着具体案例才能聊清楚了。

    2023-03-10归属地:湖北
  • Geek
    默默潜水学习,感谢作者分享!
    2023-03-09归属地:北京
    1
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部