登录
No.39核心1 条来源

解耦Decoupling

课堂投屏

一句话

解耦是减少模块之间的直接依赖,让改动一处时不必连带改动一大片。

大白话

解耦像家里的电器都用标准插头:台灯坏了就换一盏台灯,冰箱坏了就换冰箱,不用把墙里的电线重新走一遍。

比喻的边界

插头规格是早就约定好的;代码里的“接口”要你自己设计和维护,拆得太碎、约定太多,反而更难改。

拿去就能用

开始做

我在做,和其他代码缠在一起,改它总会影响别处。帮我先列出它被哪些地方调用,再提出一个最小的拆分方案,我确认后再改。

还差:项目名称、想单独修改的部分,发给 AI 前记得换掉

出错了

我只改了商品列表的显示格式,结果订单页也坏了。帮我找出这两个页面共用了哪段代码、为什么会互相影响,先说明原因,不要顺手重构其他地方。

想做深

我的项目以后可能要把数据从本地文件换成数据库。帮我判断现在读写数据的代码是否集中在一处;如果没有,提出一个逐步收拢的方案,每一步都能单独运行验证。

别这样说 → 这样说

别这样说

代码太乱了,帮我解耦一下。

这样说

我想把支付方式换成另一家,但支付代码散在订单、购物车和通知三个文件里。帮我先列出所有调用支付的地方,提出一个把支付集中到一处的最小改法,我确认后再动。

差别:说出了具体想改什么、为什么难改,并要求先出方案。

容易误解:

误解把代码拆成更多文件、更多层,就是解耦。

其实是文件分开了,彼此却还在直接改对方的数据,依然是紧耦合;解耦看的是改一处要不要连带改别处,过早拆分只会增加来回跳转的成本。

展开专业理解

常用手段有关注点分离、封装和依赖稳定的接口:模块之间只通过约定好的函数或数据格式协作,只要对外约定不变,内部实现可以自由替换。好处是更容易单独测试和替换,代价是多一层约定要维护。新手项目里,先把明显会变的部分(支付、存储、第三方服务)收拢到一处就够了。

来源

  1. Microsoft Learn:架构原则 核对于 2026-09-26