你有没有过这种时刻:周五下午四点,工单还差最后一步就能关掉,四周没人盯着屏幕。你打开那个函数,类型定义复杂得像一团毛线,编译器报错红了一片。你花了两个小时试图满足它,最后敲下一行注释,世界安静了。

打开网易新闻 查看精彩图片

开发者平时爱聊"最佳实践"——整洁架构、测试驱动开发、完美的目录结构,文章一篇接一篇。但真正把软件发出去的过程,往往要乱得多。有位开发者干脆站出来自曝:那些在代码评审里绝不会推荐的习惯,他自己天天在用。

第一个:TypeScript 的静音键

他喜欢 TypeScript,但有些类型定义复杂到离谱,为了一个只在一个地方被调用的函数,要跟编译器耗上两小时。他的解法是敲下 // @ts-ignore。不修类型,不写泛型,直接给编译器贴一块胶布然后继续往前走。用他的比喻,这相当于客人快进门时,把一屋子杂物一股脑塞进衣柜。

第二个:console.log 考古学

断点他知道,VSCode 调试器他也知道。但没有什么能战胜那种原始本能——在文件里撒下 console.log("here 1")、console.log("here 2")、console.log("why is this undefined???")。脏,低效,但它管用,而且让他在终端里找到线索时有种侦探的快感。

第三个:复制粘贴架构

在 Stack Overflow 上找到一段正好解决当前问题的代码,粘进来。它用了一个你从没听过的库?也许。它用了一个已废弃的 React hook?可能。今天你在意吗?不在意。它第一次编译就过了,这就是胜利。

第四个:CSS 的 !important 攻城锤

flexbox 布局不听话,padding 死活不生效,DOM 已经检查了二十分钟。他直接掏出 !important。这是 CSS 里的"因为我说了算"。症状解决了,但给下一个碰这个文件的人留下一路混乱。

把这些摆出来,很容易被一句"这就是烂工程"打发掉。但他的解释是:走捷径不是因为懒,而是在管理认知负荷。当 Jira 看板堆满工单、Slack 频道炸个不停、下午五点还有一次部署,大脑会自动寻找阻力最小的路径。捷径不是技能上的失败,是一种生存机制——完美不付账单,先把东西发出去才付。

不过,"聪明的捷径"和"巨额技术债"之间只隔一条很细的线。他的办法是对自己诚实:周五下午用了 // @ts-ignore,周一早上就记得开一张技术债工单;靠 !important 撑过的布局,等有喘息空间时回头重构。目标不是每天都写出完美的代码,而是写出今天能跑、明天还能修的东西。

最后他把话头递了出来:每个读到这里的人,至少都有一个瞒着团队的习惯。也许是在自己的分支上 git push --force,也许是把变量命名成 data、temp、obj2,也许是三个月没写过一个测试。他承诺不告诉你的 tech lead。