关于接手了一堆烂代码之后我做了哪些优化

16 阅读3分钟

一、🐶介绍一下项目背景吧

由于历史原因,项目经手了许多人,写代码的人也各自有各自的风格。职级参差不齐,代码的可读性和可维护性也参差不齐,隐藏的bug和性能问题也会比较多。可能很多人都是临时抽调过来协助一阵子,毕竟后续不是自己维护所以写代码的时候就比较随性(另外就是公司不发工资,大家也没什么写代码的心思),我自己前阵子也协助优化了一个文件分页预览的功能,反正就是叠💩山,基于之前几千行一个文件的基础上进行堆堆叠叠、缝缝补补。然鹅这两天领导突然让我接手这个烂摊子,说后续这个项目就由我负责了。

二、🐶说一下我的心理吧

我的第一反应是这活不能接啊。吃力不讨好啊。前面我也说了公司目前发不出来工资😭,于是我立马接了一句要裁员吗,裁我也行啊,我不接这个项目是不是就会裁我,当然了从领导的嘴里没有得到我想要的答案。我自己是想拿着裁员赔偿休息一阵子的,因为不发工资这个事情让我有点内耗,另外就是从工作到现在我也没有好好休息过,毕竟牛马都向往草原,我是真的想有个长长的假期。既然不肯裁我,自己走又不甘心,那我也不能虚度光阴是不是,来都来了干活时间过起来也快一点啊,于是我就开始回忆之前做这个项目的时候的一些问题。

三、🐶问题回忆

  1. 产品只是提了一个需求,但是开发到处都在重写这个功能,每次一出需求到处都要改,工作量太大了,比如合同的预览,签署,表单的校验(提取公共逻辑和组件,避免代码重复;表单验证逻辑提取到公共函数或自定义 Hook 中。)
  2. 文件太长了,一个js文件几千行,想结合一下上下文都很困难(把颗粒度拆小)
  3. 初始化项目的时候loading的时间很长(可借助 React.lazy 和 Suspense 进行代码分割)
  4. 热更新也不生效,每次改了都要我刷新页面(webpack配置)
  5. 图片优化(WebP 格式以减小文件大小, 懒加载,当图片进入可视区域时才加载)
  6. 频繁请求且数据更新不频繁的接口,比如合同文件,可在前端实现缓存机制,减少不必要的请求。(axios添加请求缓存)
  7. 一堆的事件监听没有移除(使用useEffect的return函数清理事件监听,避免内存泄漏)
  8. 到处都是jquery操作dom(尽量使用原生的js替代jq, 毕竟这个包也蛮大的)
  9. useRef和useState混用,然后写了个useState随机数变更去让页面重新渲染(状态管理优化)

四、🐶解决问题

哦么哦么,解决问题下回再写,突然被叫去交接,就一两个小时了,还有进行中的版本,啊这,,,我现在该怎么办呢,有什么好建议吗