美文网首页
敢问“度”在何方?:谈谈软件设计中的“适度原则”

敢问“度”在何方?:谈谈软件设计中的“适度原则”

作者: 燃烧杯 | 来源:发表于2023-02-04 11:37 被阅读0次

中国人讲究 “中庸”,“过犹不及”,凡事都要把握一个 “度”。而软件工程正是一个没有银弹,处处要把握度的地方。

比如微服务,使用得当能够解耦应用,提升研发效率,使用不得当则是将一个“大泥球”,变成一个“分布式大泥球”;将单点故障,变成“分布式故障”。

在比如设计模式,有人认为设计模式能够改善系统质量,而有人认为只是编码 “炫技”。这本质上都是 “适度” 的问题。

“度” 在哪里:不在技术,而在业务

一段代码或者微服务的拆分是否得当?很多人会有不同的观点。

比如按照设计模式 DRY 原则(Don't Repeat Yourself),相同的代码就应该被抽成一个方法,这样修改时方便统一修改。

但是在复杂工程中导致的问题就是,DRY 的函数会被大量的地方引用,导致其内部逻辑需要考虑各种情况,逻辑及其复杂,修改风险也极高。

这么看来,DRY 也没有那么好,复制代码反而可以降低后续的修改风险,日后可以根据业务需要再进行整合,“拖延决策” 也优秀设计的特点之一。“复制代码” 貌似也没有很多人所鄙夷的那样不堪

DRY原则
优点 缺点
重复代码 修改风险小;日后可以根据业务需要再做整合 逻辑分散,难以统一修改和收口
DRY 方便统一修改 修改风险高,逻辑复杂,需要考虑所有入口

从上表可以看出,重复代码和 DRY 很难说孰优孰劣,有时候费了半天劲抽取代码,反而系统复杂性更高了。符合设计原则的代码不一定是好代码,不符合设计原则的代码不一定是坏代码。

通过这个例子就是想说明,通过纯粹技术的角度是看不出来软件设计决策是否正确的,必须从更高的业务视角出发才行。

代码本质上是业务的反映,它只有在最符合业务的地方,才能降低系统复杂度。

方法/函数的存在不是单纯为复用,方便统一修改等技术原因,而是因为它本来就“应该”在那里。

不同模块有不同的“度”

橘生于南则为橘 橘生于北则为枳

“度” 也是不能一概而论的,不同模块有它不同的 “度”,比如对于阿里巴巴的双十一交易系统,钉钉 IM 这样的核心系统,做多少设计都不过“度”,而对于运营管理后台,可能稍微设计一下可能就 “过度” 了。有时候觉得自己手里的系统很“烂”可能并不是因为公司技术不行,而是自己负责的业务不够核心。

DDD 中的子域概念就是用来描述这个的,在 DDD 中存在三种子域:

  • 核心子域
    • 能够给公司带来核心竞争力的领域模块,拥有很高的复杂度和差异化价值
    • 比如滴滴的调度算法,阿里的交易系统,钉钉的 IM 系统等等
    • 该模块的 “度” 几乎没有天花板,投入精兵强将,尽可能地拉开和竞争对手的聚合,再怎么设计也不过“度”
  • 支持子域
    • 用来支撑核心子域,但是不能带来竞争力
    • 比如运营管理系统,后台排查系统等等
    • “度”很低,外包,或者尽可能使用搭建系统搭建
  • 通用子域
    • 通用的业务或者技术问题领域,一般有现成的解决方案,可以直接采购
    • 比如财务系统,可以直接采购用友,金蝶;分库分表,消息队列可以直接使用开源软件,或者购买云上解决方案
    • 尽可能减少投入,购买尽可能完善的解决方案,投入的每一点都是 “过度”;这些年上云的趋势就是在尽可能地削减这一部分投入

以 DDD 中经典的货运管理系统为例(简化):

子域划分

大厂前几年都非常喜欢把业务“铺开”,所有东西都自己做一遍,导致对 “支持子域” 和 “通用子域” 的 “过度” 投入。最近经济下行,没有这么多资金支持这种 “过度” 投入了,只好大量裁员,这正是对自己 “核心子域” 没有清晰认知的结果。

相关文章

  • 敢问“度”在何方?:谈谈软件设计中的“适度原则”

    中国人讲究 “中庸”,“过犹不及”,凡事都要把握一个 “度”。而软件工程正是一个没有银弹,处处要把握度的地方。 比...

  • 敢问“度”在何方

    01 “这有什么难的,你只要把握好了度,就一定可以做好的。”年幼的我曾多次大言不惭地发表这种言论。随着年龄的增长,...

  • 10-1定位

    【标题】敢问路在何方? 【字数】590 【正文】 敢问路在何方? 不敢问… 很多人不敢问自己的路到底在何方,方向是...

  • 敢问信仰在何方?

    今天依旧平白无奇,刚洗完澡的我在床上辗转反侧,心堵了一般,像受了委屈却无从诉说。“可能是受够了这样的日子了吧...

  • 敢问底在何方?

    这几天市场跌得有点凶,是不是到底了呢?众说纷纭,经历过上一个牛熊的币圈大神南宫远给出了他的观点。 由于比特币每四年...

  • 敢问佛在何方

    佛教历经几千年来一直是永久不衰!为何它能经久不衰呢?佛法如果学的好它可谓是人生的一门高深哲理课!如今的医生、...

  • 敢问“路”在何方?

    今日冬至,2016年的最后一个节气…… 这几天雾霾甚重,济南的天空一片灰暗,今早还飘起了冬雨。新闻报道中各种报道,...

  • 敢问初心在何方?

    当前社会不乏努力拼搏,埋头数年只为有朝一日能昂头翱翔万里的有志青年!中国复兴大业确是指日可待……不过,志有江海,熟...

  • 敢问“义”在何方?

    子曰:“不义而富且贵,于我如浮云。”孔子强调将“义”置于“富贵”之上,这一理念来源于他强大的人格力量和高尚的情...

  • 敢问,家在何方?

    作:晗桦 《敢问家在何方》 仰望着天空, 有一抹矫健的身影飞过, 哦,是那雄鹰。 俯瞰着绿水, 有一群灵动的身影游...

网友评论

      本文标题:敢问“度”在何方?:谈谈软件设计中的“适度原则”

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