这个夏天,给你的代码减个肥 🍉|let-s-refactor 插件开发之路(一)

简介: 这个夏天,给你的代码减个肥 🍉|let-s-refactor 插件开发之路(一)

前言


你将得到什么?

通过本文,各位将了解(或者学习)到:

  • es-module 导入导出
  • 可能用的较少但比较好用的正则语法
  • vscode 插件从设计到实现
  • ...

本文内容较多,希望对你有所启发,如有建议或者纠正,也望不吝赐教。


代码”减肥“的起因


各位好久不见🌺,前两个月的时间经历了一个月的加班以及一个月的居家办公。在疯狂加班的那段时间手里接到了一个时间比较紧急,历史包袱也比较重的项目:

  • 产品形态出现多次变更

  • 开发人员几经转手
  • ...


以及本次迭代版本服务端架构出现了比较大的变更,使得老的前端代码设计难以支撑新架构下服务端 api 的变更,于是催生出我的一个想法:

重构吧!


重构的结果还是好的,既赶上了提测,也在优化项目结构的基础上完成了 50% 代码量的减少,而 50% 对于本项目而言,大抵是相当于 10000 行左右的代码量。

在这次代码“减肥”的过程中我有了一些总结(或者说是一些比较让我揪心的体验),使得我有了后文中的想法。


读到这里可能大家会问:你加班了一个月,那居家办公那段时间下班后都干嘛去了?

我只能说,swicth 真好玩!


揪心体验


不知道各位在职业生涯中有没有遇到过以下体验:

  • 一个文件完全没有被使用过,但是在项目目录中恬不知耻的存在着
  • 一个方法,一个配置信息或者一个常量早早就已经过时了却依旧存在


若项目历史不久,此类信息倒是影响不大,但是随着版本迭代,他们会越来越多,并好似狗皮膏药一般深入到项目代码的各个角落,难以察觉,又恶心至极!

这种删又删不干净,又没事突然出现恶心你一下的感觉真的难以言表...


💡:无效的文件可能容易发现并且在适当时机进行删除,但是无效的常量或配置类内容就真的难以处理。


于是我在此次重构过程中几乎审查了所有的历史文件,所以我那代码量减少 50% 的壮举不全是我设计的功劳,很大一部分还是由于删除了大量的无效代码...(诶,真的很不想承认,但是做人要诚实🍉)

在删代码的过程中,我产生了如下想法:

这个过程,需要更加智能


做更“懒”的工程师


根据前面的铺垫,我想各位已经知道了我此次的目标:


  • 自动识别无效文件
  • 自动识别无效常量(配置信息/公共方法等)


然而,我喜欢画饼,在开发之初我就画了以下思维导图,插件命名为 let-s-refactor 也是希望我这个插件所做的事情不止于此,可以为提高代码库质量提供更多能力!


网络异常,图片无法展示
|


而对于代码的读取分析,最方便的手段也就是:vscode 插件。文章的后续内容便是插件的第一批功能清单以及开发思路的分享。


功能清单 V0.0.1


网络异常,图片无法展示
|


本次介绍 v0.0.1 版本的三个主要功能:


  1. 统计代码行数与文件数

显而易见的需求,不计算代码行数与文件数,怎么统计最终的成果(没错,主要工作还没做的我就已经开始思考成果的展示了🍉)


网络异常,图片无法展示
|


  1. 列出项目中的无效文件

将项目中无效的文件展示出来,以帮助进行后续的分析删除


网络异常,图片无法展示
|


  1. 列出项目中的无效导出


将项目中无效的 export 展示,可能包括常量,配置信息与公共方法。


网络异常,图片无法展示
|


注意:本插件现仅支持本公司统一框架下的项目,未来想通过配置文件的方式支持所有项目。

相关文章
|
JSON Java API
一款适合IT团队的在线API文档、技术文档工具-showdoc介绍
为大家推荐一款适合IT团队的在线API文档、技术文档工具,有免费开源和在线托管的版本。可以直接使用官网搭建好的地址,也可以在自己的服务器上搭建。
一款适合IT团队的在线API文档、技术文档工具-showdoc介绍
|
6月前
|
中间件 API Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:OPA 集成指南:从原理到实践
GoWind Admin 集成 OPA,实现企业级权限管控。基于“策略即代码”理念,通过 Rego 语言统一管理鉴权逻辑,支持 RBAC、多租户等复杂场景,开箱即用,助力中后台系统安全高效落地。
396 3
vue2 axios跨域解决方法 和nodejs+express跨域
vue2 axios跨域解决方法 和nodejs+express跨域
492 0
|
数据采集 存储 运维
神策数据联合阿里云计算巢,探索云端私有化部署新形态
本文是神策数据上架到计算巢的方案介绍,原文请查看:https://mp.weixin.qq.com/s/z2EAIGwYqptvlcBjK-xacQ数字经济时代,云计算作为新型基础设施的关键支撑技术,正在逐渐成为赋能企业数字化转型的数智创新平台。《中国云计算创新活力报告》指出,我国云计算产业近年来增速超过 30%,是全球增速最快的市场之一。当前,远程办公、在线教育、网络会议等场景需求进一步推动着
1353 0
神策数据联合阿里云计算巢,探索云端私有化部署新形态
|
运维 安全 测试技术
东软集团与阿里云携手助力企业上云,共建生态圈
在2022云栖大会上,东软集团凭借着领先的全球化信息技术、丰富的交付经验,与阿里云携手在Landing Zone项目上的合作共建,荣获阿里云2022「Landing Zone生态合作伙伴授牌认证」,未来双方将继续携手共进,共同构建繁荣的生态,帮助更多的客户上好云、管好云。
东软集团与阿里云携手助力企业上云,共建生态圈
|
程序员 API Android开发
iOS开发:简单的Toast提示框实现
博主是以iOS开发出身,那就最后一篇博文就分享一下关于iOS的内容吧。iOS开发过程中,有些时候操作App的时候,需要给用户对应的响应提示操作,使用系统自带的提示框不是每种情况都适用的。
1158 0
iOS开发:简单的Toast提示框实现
|
5G 虚拟化
带你读《5G 无线增强设计与国际标准》第三章增强多天线技术3.4上行满功率发送(二)
带你读《5G 无线增强设计与国际标准》第三章增强多天线技术3.4上行满功率发送(二)
带你读《5G 无线增强设计与国际标准》第三章增强多天线技术3.4上行满功率发送(二)
|
缓存 运维 应用服务中间件
降云十八掌——阿里云运维架构最佳实践(上)
本文为驻云科技运维总监乔锐杰在阿里云MVP直播与大家分享的运维技术实践。
11452 0
|
机器学习/深度学习 程序员 开发者
【云周刊】第191期:阿里云的这群疯子
真正的疯子,从来不看电影。他们把别人的目光变成聚光灯,把自己的生活变成真人秀,手提钢刀用肉身串演一个浓重的角色。...更多精彩内容,尽在云周刊!
14874 0