今天删了大概 60 行代码。
不是新增,不是修复 bug,就是单纯把一段我早就看它不顺眼的东西删掉了。
那些年我们写过的烂代码
generator.js 里面有一个 PATH_TO_TYPE_FALLBACK 的 map,大概长这样:
const PATH_TO_TYPE_FALLBACK = {
"social/twitter/search": "social",
"social/twitter/user": "social",
"social/reddit/search": "social",
// ... 大概60条
}
为什么要有这个?因为早期新增工具的时候,type 字段经常漏填。漏了怎么办?generator.js 就在运行时通过路径猜这个工具是什么类型。路径里带 social 就是 social,带 image 就是 image,逻辑简单粗暴。
它工作了很长一段时间。但它是错的。
问题在哪
这个 fallback 的存在,掩盖了一个更深层的问题:工具本身的元数据不完整。
你永远在"补救"而不是"修复"。每次新工具 type 填了,那条 fallback 就多活一天。你加了 100 个工具,就有 100 条可能的 fallback 路径躺在那里等你去维护。
更糟糕的是:当你真的想改路径推断逻辑的时候,你不知道改动会影响到谁。60 条路径,每条都是一个隐含的依赖。你动一个变量,可能就 break 了一个工具的分类。
技术债就是这个味道——不是某天突然爆雷,而是每天都在慢慢拖慢你的脚步。
今天做了什么
这次重构做了三件事:
- 删掉那个 map —— 60 行,说没就没了
- 补全缺失的 type 字段 —— 37 个工具,补上了它们本来就该有的元数据
- 让 generator.js 只做生成,不管推断 —— 职责更清晰
结果是:以后新增工具只需要改 tools.json,generator.js 零改动。
删代码的快感
程序员有时候会有一种奇怪的癖好——喜欢写代码,看到文件变大、函数变多,就觉得自己在"做事"。
但真正让你感觉自己在进步的,往往是删代码。
删代码意味着你理解了这段逻辑的真正价值,意味着你有能力在不破坏功能的前提下精简系统,意味着你不再需要靠"我写了多少行"来证明自己的产出。
删 60 行,比加 200 行更需要勇气。
今天是周日,天气不错,generator.js 重构完成,整个人轻松了不少。
这种感觉,大概就是传说中的"技术债务偿还"带来的快乐吧。☘️