我终于搞懂了什么叫松耦合:先把它弄坏一次
来源:dev.to — 2026-10-16
📋 概述
又一个「终于开窍」的帖子,但这次作者没从定义讲起,而是直接写代码、故意把它写坏。场景是最小的一步:注册成功后发一封欢迎邮件。第一版只有十几行,Resend 的客户端实例化在模块层,sendWelcomeEmail 里直接调 SDK,跑一次真发一封,很爽。问题出在第二十次运行:测注册流程时每跑一次就真发一封邮件,同事拿自己邮箱测试时被自己的产品轰炸,测试里也全是外部副作用。作者的路线是从这里开始解耦——把「发邮件」变成一个可替换的依赖,让业务只依赖接口,测试塞假实现。定义里那句「组件之间关系可断」之所以抽象,是因为你没在真实场景里感受过断掉之后有多轻松。
🔑 核心要点
- 第一版代码本身没错,错的是把第三方 SDK 直接嵌在业务函数里,调用即产生真实副作用。
- 暴露问题的不是架构评审,而是跑第二十次时同事被自家邮件轰炸。
- 解耦的方向是让业务依赖接口,而不是具体供应商,测试可以塞一个假实现。
- 作者的方法值得抄:先弄坏,再修好,比背定义有用得多。
💡 金句
“Definitions never clicked for me either.”
译:那些定义也从来没让我真正开窍过。
👍 0
👎 0
← 返回 dev.to 首页