初级开发者写代码。高级开发者删除它。

发布: (2026年1月20日 GMT+8 18:00)
3 min read
原文: Dev.to

Source: Dev.to

概览

我们常常赞美添加新功能、快速交付以及“把事情做好”。但有时,最有成效的做法是停下来,审视你的代码库,并承认:“这太乱了。”

过去几个月,我一直在构建 DotShare,一个帮助开发者将代码片段分享到社交媒体的 VS Code 插件。它运行良好——用户很喜欢——但其内部实现却是一场噩梦。

这就是我在 24 小时内将一个 2000 多行的单体文件 重构为干净的 Clean Architecture 的故事。

🎥 转型(30 秒观看)

光说不练不算数。这是删除 2000 行意大利面式代码的真实画面。纯粹的满足感。

🍝 问题: “单体类” 陷阱

我掉进了经典的陷阱。我从一个文件 DotShareProvider.ts 开始。

  • 起初大约 200 行——我觉得“还能管理”。

  • 然后我加入了 LinkedIn 支持、Telegram、AI 标题生成……

  • 不知不觉,我面对的是一个 2000 行的巨兽

  • 逻辑与 UI 紧密耦合。

  • 认证令牌与 UI 渲染在同一个类里处理。

  • 调试意味着不停地滚动……滚动……滚动。

🧹 解决方案:Clean Architecture

我决定停止“补丁式”开发,转向“工程化”。我用了 24 小时从头重写核心架构。

1. 打破单体

我摒弃了单文件方式,采用基于 单一职责原则(SRP) 的模块化结构。

Services – 纯业务逻辑

  • HistoryService
  • AnalyticsService

Handlers – UI 与服务之间的桥梁

  • PostHandler
  • ConfigHandler

UI – 仅负责渲染

  • DotShareProvider

结果
不再是一个文件搞定所有功能,项目现在由九个专注的文件组成,每个文件只做好 一件事

🛡️ 安全升级

最关键的部分是保护认证令牌。之前它们存放在 globalState(普通 JSON)中。我把所有内容迁移到了 VS Code 的 SecretStorage API

// Old Way (Insecure)
this.context.globalState.update('linkedinToken', token);

// New Way (Enterprise Security)
await this.context.secrets.store('linkedinToken', token);
Back to Blog

相关文章

阅读更多 »