1
0
0

接手了一个老项目后,我理解了什么叫"技术债"

文章摘要
|

上个月接手了一个2019年启动的项目。

打开代码仓库的那一刻,我承认我沉默了整整一分钟。

一个页面组件,3200行。

是的,你没看错,三千二百行。React Class Component写的,生命周期里塞满了业务逻辑,render方法里有二十多个条件分支。变量名有abdatadata2newDatafinalDatarealFinalData...我一度怀疑这代码是不是做过混淆。

更精彩的是样式。一个页面的CSS文件1500行,大部分是!important覆盖前面!important。改一个按钮的间距,可能会让整个页面的布局崩掉,因为到处都是绝对定位和负margin。

打开项目依赖——有四个不同的日期库(moment、dayjs、date-fns、还有自己封装的utils),两个状态管理库同时用,三种不同的HTTP请求封装方式共存。

如果代码有气味,这个项目大概能熏死一头大象。

最让我崩溃的是——没有文档,没有注释,没有单元测试。连README.md都是空的。上一任开发者已经离职半年,没有任何交接。

我开始试图理解这个系统的业务逻辑。花了整整一周,才理清楚一个核心模块的数据流向。这期间我在心里骂了无数次"这谁写的",然后git blame一看——有些代码是我自己一年前参与临时需求时写的

那一刻我羞愧到想把电脑合上。

说真的,这件事给我上了深刻的一课:

  • 写给别人的代码,终究是写给你自己的。三个月后的你就是那个"别人"

  • 代码是写给人看的,只是恰好能被机器执行。人和人之间沟通的成本远比机器高

  • 一个清晰的命名,胜过一段长篇注释

  • 函数职责要单一——如果一个函数做了三件事,说明它应该被拆成三个

  • 别追求"写得多",追求"写得清楚"

这个项目还在重构中,过程很痛苦,但每重构一个模块,我都认真加上注释、抽离公用逻辑、补充简单的单元测试。

你留下的每一行代码,都是你职业素养的签名。

与诸君共勉。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论

欢迎来到我的博客!