接手了一个老项目后,我理解了什么叫"技术债"
上个月接手了一个2019年启动的项目。
打开代码仓库的那一刻,我承认我沉默了整整一分钟。
一个页面组件,3200行。
是的,你没看错,三千二百行。React Class Component写的,生命周期里塞满了业务逻辑,render方法里有二十多个条件分支。变量名有a、b、data、data2、newData、finalData、realFinalData...我一度怀疑这代码是不是做过混淆。
更精彩的是样式。一个页面的CSS文件1500行,大部分是!important覆盖前面!important。改一个按钮的间距,可能会让整个页面的布局崩掉,因为到处都是绝对定位和负margin。
打开项目依赖——有四个不同的日期库(moment、dayjs、date-fns、还有自己封装的utils),两个状态管理库同时用,三种不同的HTTP请求封装方式共存。
如果代码有气味,这个项目大概能熏死一头大象。
最让我崩溃的是——没有文档,没有注释,没有单元测试。连README.md都是空的。上一任开发者已经离职半年,没有任何交接。
我开始试图理解这个系统的业务逻辑。花了整整一周,才理清楚一个核心模块的数据流向。这期间我在心里骂了无数次"这谁写的",然后git blame一看——有些代码是我自己一年前参与临时需求时写的。
那一刻我羞愧到想把电脑合上。
说真的,这件事给我上了深刻的一课:
写给别人的代码,终究是写给你自己的。三个月后的你就是那个"别人"
代码是写给人看的,只是恰好能被机器执行。人和人之间沟通的成本远比机器高
一个清晰的命名,胜过一段长篇注释
函数职责要单一——如果一个函数做了三件事,说明它应该被拆成三个
别追求"写得多",追求"写得清楚"
这个项目还在重构中,过程很痛苦,但每重构一个模块,我都认真加上注释、抽离公用逻辑、补充简单的单元测试。
你留下的每一行代码,都是你职业素养的签名。
与诸君共勉。

