DDD与软件复杂度

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

DDD 可以应对以下问题:

 

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

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

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

 

 

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

 

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

 

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

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

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

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

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

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

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

 

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

 

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

 

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值