美文网首页
发散式变化和霰弹式修改区别是什么?

发散式变化和霰弹式修改区别是什么?

作者: 袁慎建 | 来源:发表于2020-05-30 20:28 被阅读0次

发散式变化和霰弹式修改经常会让人难以区别?霰(xiàn)弹式修改这个借助了霰弹枪隐喻。玩过魂斗罗的小伙伴应该知道里面就有一种散弹枪(可能是为了方便辨识,做了更改),扫射出来的子弹是大范围的分散的。霰(xiàn)弹式修改意味着你的改动会造成大范围的影响,一处修改,到处修改。这句话也道出了重复代码的坏味道,所以想重复代码和重复Switch也都散发出了霰弹式修改的坏味道,这样的代码坏味道在代码中很常见,也较容易识别出来。

发散式变化,这个坏味道从字面上来看,是引起变化的原因很发散,就好比,我是一个初来乍到的实习生,有好几个部门的主管,比如财务部,人事部,市场部,他们都可以给我下指令,导致我在工作中不得不去面对这些不太相关指令,不断的在不同的上下文中切换,这种感觉肯定不会好到哪去,虽然不敢太有怨言。

如果一个类或模块中,它关注的上下文太多了,就势必导致不同的上下文的改动都会引发该类的改动,职责过大,后期越来越难维护。等等,单一职责不就是这么讲的吗?对的,这个其实就有点违背SOLID中的单一职责原则的。

不幸的是,这种坏味道不太容易被识别出来,尤其对一些新手而言,就好比一个大厨告诉一个新厨,炒菜要放盐少许,这就有点很难把握了。有一些经验可供参考,比如一个类或模块关注了明显能区分的业务模块,就要考虑拆分了,比如:

  1. 处理保险业务还处理数据库相关操作,
  2. 处理了日志工作,还做了用户管理。
  3. 处理字符串格式化报表,还做了第三方用户系统集成

另外,业界提倡的DDD也可以在前期帮助我们去梳理业务,寻找聚合,划分限界上下文,都能很大程度规避了后期的设计问题。

用一个连贯的故事总结这两种坏味道:初来乍到,3个不同部门的主管都可以给我下工作指令,能让我变化的点很发散。经过十年努力,我开创了的3家公司,每做一次体制改革,我需要在三家公司都执行一遍,引发大范围修改。

关于这两种坏味道,你在代码中见得多吗?

相关文章

  • 发散式变化和霰弹式修改区别是什么?

    发散式变化和霰弹式修改经常会让人难以区别?霰(xiàn)弹式修改这个借助了霰弹枪隐喻。玩过魂斗罗的小伙伴应该知道里...

  • 重构方向

    重复代码 过长函数 过大的类 过长的参数列 发散式变化 霰弹式变化 依恋情结 数据泥团 基本类型偏执 switch...

  • 何时需要重构:发散式变化

    divergent change发散式变化 什么叫发散式变化? 当一个类因为不同原因在不同方向发生了变化。 比如某...

  • 读书「学习之道」

    关于发散模式和专注模式 What:发散模式和专注模式是什么? 发散模式和专注模式式大脑的不同思维模式。 发散模式会...

  • 专注式和发散式思考

    面对日常的工作生活,我们的大脑交替采用两种不同的思考方式:专注式(Focused Mode)和发散式(Defuse...

  • [5]Divergent Change(发散式变化)

    发散式变化 我们希望软件能够更容易被修改-毕竟软件怎么说本来也就是软的.一旦需要修改,我们希望能够跳到系统的某一点...

  • 发散式思考和收敛式思考

    发散性思维。需要人们尽情的放飞思想、扩展边界、没有束缚的探寻创造性的想法或接近方案。发散性的思维的输出有无限的可能...

  • 自述式沟通和聆听式沟通的区别及有效沟通的方法

    1.自述式沟通和聆听式沟通的区别是什么? 自述式沟通是以我开头 我因为什么感到什么。 聆听式沟通是以你开头 你因为...

  • 分布式与集群的区别是什么?

    分布式与集群的区别是什么?

  • 发散式思考

    学习简单的分为三个过程,第一个过程是泛学,需要广泛的涉猎各种领域。第二个过程是聚焦,需要从涉猎的领域中找到希望进一...

网友评论

      本文标题:发散式变化和霰弹式修改区别是什么?

      本文链接:https://www.haomeiwen.com/subject/iavhzhtx.html