DDD与软件复杂度

DDD解决的是 软件开发的复杂度问题 只有应用在大型项目上才能产生最大的收益

DDD 可以应对以下问题:

  • 没有对行为的重用,也没有对业务问题的抽象,每当操作用到业务规则时,都要重复这些业务规则。

  • 快速的原型建立和迭代很快会达到其极限,因为抽象的缺乏限制了重构的选择。

  • 复杂的功能很快会让你无所适从,所以程序的扩展只能是增加简单的应用模块,没有很好的办法来实现更丰富的功能。

复杂”其实覆盖了 Complicated 与 Complex 两个方面。要理解软件复杂度的成因,就应该结合理解力预测能力这两个因素来帮助我们思考。

影响理解力的第一要素是规模

软件开发的拥堵现象或许更严重:

  • 函数存在副作用,调用时可能对函数的结果作了隐含的假设;

  • 类的职责繁多,不敢轻易修改,因为不知这种变化会影响到哪些模块;

  • 热点代码被频繁变更,职责被包裹了一层又一层,没有清晰的边界;

  • 在系统某个角落,隐藏着伺机而动的 bug,当诱发条件具备时,则会让整条调用链瘫痪;

  • 不同的业务场景包含了不同的例外场景,每种例外场景的处理方式都各不相同;

  • 同步处理与异步处理代码纠缠在一起,不可预知程序执行的顺序。

结构成了决定系统复杂度的关键因素。

软件设计是不断拆分、继续拆分、持续拆分的微型化过程

主要问题: 分解的软件元素 怎么协同、通信

导致软件系统变得复杂的成因是规模结构变化三要素,则控制复杂度的原则就需要对它们进行各个击破

发布了84 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/csdn_9527666/article/details/105220940
今日推荐