首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

图穷匕见-所有反DDD模式都是垃圾

编程知识
2024年09月04日 07:10

本文书接上回《主观与客观,破除DDD凭经验魔咒》,关注公众号(老肖想当外语大佬)获取信息:

  1. 最新文章更新;

  2. DDD框架源码(.NET、Java双平台);

  3. 加群畅聊,建模分析、技术实现交流;

  4. 视频和直播在B站。

开个玩笑

“我不是针对这一个问题,我是说所有的反DDD模式都是垃圾”,作为教练,在团队中我时常用这样的玩笑来调侃不符合DDD价值观的判断逻辑和决策结果,并指出具体不符合的点在哪里,由于大家已经相互非常了解,能够很快反应过来并建立共识,从而不断修正决策逻辑和决策结果,使问题的范围和解决方案收敛在一个确定的范围内,持续地保持对系统复杂度的掌控。

===

前提条件

首先需要对齐我们讨论的场景,主要在下面的条件范围内:

  1. 软件系统是长期迭代的

  2. 软件系统是业务向的系统

在这个条件范围下,我们可以解读为:

  1. 我们认为迭代成本是软件成本的重要组成部分

  2. 我们认为自己打造的软件系统的业务复杂度高于技术复杂度

成本与复杂度

为了尽可能降低系统迭代的综合成本,本质上就是掌控系统复杂度,而系统复杂度由业务复杂度和技术复杂度共同构成。

为了实现“掌控系统复杂度”的目标,基于复杂度守恒定律,我们有以下观点:

  1. 复杂度不可被消除,只可被转移

  2. 尊重业务固有复杂度

  3. 避免引入额外技术复杂度

而我们在《关于领域驱动设计,大家都理解错了》一文推导过关于复杂度的结论:

  1. 系统复杂度与元素的数量和元素的关系有关;

  2. 元素的关系对系统复杂度的影响远远大于元素的数量所产生的影响;

===

核心观点

如果你已经跟随《老肖的领域驱动设计之路》系列一路读过来,那么我们接下来的推导过程就需要在之前构建的认知基础上进行,这里列出核心观点以供复习:

  1. 领域驱动设计是一种价值观

  2. DDD价值观:边界明确是最重要的事

  3. 软件长期主义:可维护性是最重要的事

  4. DDD是软件工程的第一性原理

基于上面这些观点,DDD的核心,就是掌控系统元素之间的关系,明确边界,将复杂度控制在一个个有限的范围内,完全匹配软件工程的成本控制的逻辑,那么是不是就可以得出下面的结论:

  1. 符合DDD价值观,意味着符合软件工程的成本利益

  2. 反DDD的模式,意味着不符合软件工程的成本利益

那么回到本文的标题,“所有反DDD模式都是垃圾”,更准确的描述应该是“所有反DDD模式都是不符合软件工程成本利益的”,我认为,这个逻辑是成立的。

如果你认同《DDD是软件工程的第一性原理?》一文的观点,那么同样也能得出这样的结论,违反软件工程第一性原理,当然会适得其反,走向系统快速失控的深渊。

所以,很抱歉,如果你的软件设计思维,没有围绕着“明确和维护边界”来开展,那么大概率是错误的价值判断思路,系统的复杂度大概率也很难被掌控,而具象化出来的现象,就是我们常说的“迭代不动了”。

那么,快来和我一起实践DDD吧!

From:https://www.cnblogs.com/xiaoweiyu/p/18395637
本文地址: http://www.shuzixingkong.net/article/1716
0评论
提交 加载更多评论
其他文章 借助表格技术提升智能审计云平台应用体验
背景说明: 2009年,立信加入全球第五大国际会计网络——BDO国际。BDO 全球各地成员所均使用统一的审计方式,在完全遵守国际审计准则的原则同时,也会应不同地区要求提供附加指引,确保在全球提供一致的服务水平。如今,立信的审计过程及档案记录均已实现电子化。然而,审计工作并非一成不变,为了给客户提供最
借助表格技术提升智能审计云平台应用体验 借助表格技术提升智能审计云平台应用体验 借助表格技术提升智能审计云平台应用体验
利用分布式锁在ASP.NET Core中实现防抖
前言 在 Web 应用开发过程中,防抖(Debounce) 是确保同一操作在短时间内不会被重复触发的一种有效手段。常见的场景包括防止用户在短时间内重复提交表单,或者避免多次点击按钮导致后台服务执行多次相同的操作。无论在单机环境中,还是在分布式系统中都有一些场景需要使用它。本文将介绍如何在ASP.NE
利用分布式锁在ASP.NET Core中实现防抖
【题目全解】ACGO挑战赛#8
前言:本次挑战赛的难度相较于前面几期有所提升,主要还是因为集训的关系,出题组的成员们没有充裕的时间想原创题目(so,只能原模原样搬运某一场 ABC 的考试了。)Anyway,AK 了就行。 备注:由于 Python 的常数过大,本题解暂不同步更新 Python 版本的题解。 第一题 - Inters
论文速读纪录 - 202408
特别鸣谢kimi,以下论文均在kimi辅助下阅读。 目录 RMIB: Representation Matching Information Bottleneck for Matching Text Representations AttentionRank: Unsupervised keyphr
论文速读纪录 - 202408 论文速读纪录 - 202408 论文速读纪录 - 202408
架构师备考的一些思考
前言 之前的python-pytorch的系列文章还没有写完,只是写到卷积神经网络。因为我报名成功了系统架构师的考试,所以决定先备考,等考完再继续写。 虽然架构师证书不能证明技术水平,但在现实生活中的某些情况下是有意义的。考试虽然无聊,但有些考题还是蛮有意思的。 思考 看了几套架构师的考题,发现个有
架构师备考的一些思考 架构师备考的一些思考
1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024
分形几何是一个数学分支,主要应用于作图方面。一般来说,分形经过无数次递归迭代后的结果。比如取一条线段,抹去中间的三分之一,会得到长度是原三分之一长的两条线段,中间隔着相同长度的间隙。然后重复这个动作,直到所有的线段都被抹掉,就将会得到被以固定模式出现的间隙隔开的无限多的点,这就是康托尔集合。 目前有
1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024 1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024 1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024
LLM大模型基础知识学习总结
在这个已经被AI大模型包围的时代,不了解一点大模型的基础知识和相关概念,可能出去聊天都接不上话。刚好近期我也一直在用GPT和GitHub Copilot,也刚好对这些基础知识很感兴趣,于是学习了一下,做了如下的整理总结,分享与你!
LLM大模型基础知识学习总结 LLM大模型基础知识学习总结 LLM大模型基础知识学习总结
LoRA大模型微调的利器
LoRA模型是小型的Stable Diffusion模型,它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。因为体积小,效果好,所以lora模型的使用程度比较高。
LoRA大模型微调的利器 LoRA大模型微调的利器 LoRA大模型微调的利器