您的位置:首页 > 互联网

“3 天删了 5 万行代码后,我的 Web 程序活得更好了!”

发布时间:2023-12-15 20:55:46  来源:互联网     背景:

声明:本文来自于微信公众号 CSDN(ID:CSDNnews),作者:苏宓,授权转载发布。

站在一名技术工程师的角度来看,一款完美的应用程序,并不是指所有功能一应俱全,已经没有什么新功能能够添加进来,而是指所有功能版块都非常重要且活跃度很高,已经没有什么可以删除了。

曾在 Twitter 担任软件工程师的AakashN S,于2019年出来创业后,开发了一款软件开发和数据科学的学习平台Jovian,现在他也是这家公司的创始人兼 CEO。近日,他做了一个大胆的决策,减少自己所开发平台的“功能债”,即删代码。

于是,他用了3天的时间删除了生产环境中的5万行代码。结果出乎意料的是,这款应用程序不仅没有遭到破坏,还得到了功能释放,变得简单易用。在这篇文章中,Aakash N S 带来了他的经验分享,也希望能对很多 App 开发者有所裨益。

以下为译文:

上周,我从 Jovian 的代码库中删除了50,000多行代码。所有被删除的代码之前都是在生产环境中运行的,这些代码支撑着 Web 应用程序每日处理十万个用户请求。

这一次删除的代码约占我们前端代码库的70%,它们主要是用 JavaScript、React 和 Next.js 编写的。

令人惊喜的是,我能够在不破坏应用程序的前提下,用短短三天删除超过三分之二的代码。同时,这个过程中几乎没有丢失任何主功能,让应用程序更轻且更易于使用,以及代码库也变得简单易读。

自2019年以来,我们一直在致力于构建 Jovian ,该平台也经历了各个演变阶段。随着公司规模的扩大,我们不断添加新功能、页面、按钮和设置,但我们很少考虑删除某些内容(谁会这样做?),我们有意识地努力保持应用程序简单易用,但它仍然积累了大量“功能债”。

我曾在某个地方读到过一句话——典型软件应用程序中超过80% 的功能几乎从未被使用过。我也在某个地方看到过一个截图,显示了微软 Word 中可用的所有工具:

话说 Jovian 的情况并没有这么糟糕,但拥有复杂的应用程序和庞大的代码库确实使得更改、升级库和添加可能真正重要的新功能变得困难。

起初,我只是想要重写网站

几周前,我起初的想法是对 Web 应用程序进行尝试性重写,相当于推翻之后重头来过。不过,这款 Web 应用程序采用了最新版本的 Next.js 构建,并部署到 Cloudflare Pages。

我很快意识到从头开始全面重写是行不通的。因为重写整个应用程序不仅需要几个月的时间,而且几乎肯定会充满数百个错误。

ipad pro 9.7运行内存多大

全面重构 Web 应用程序几乎永远不会成功。即使我们这样做了,所花费的时间也比计划的要长得多。之前我在 Twitter 工作时亲身经历了这一点,在那里我花了几个月的时间将代码从 Ruby on Rails 迁移到 Scala。

然后,我又开始考虑使用渐进式迁移的方法。在这个过程中,也出现了一系列的挑战。举个例子,我创建的新页面在结构和内容上都非常简单,而我们应用程序中的现有页面包含了多个交互式选项卡、按钮和小部件。我们现有的 Web 应用程序使用由 Python 后端提供服务的 REST API,而我想利用服务器操作直接从 Next.js 与我们的数据库进行交互,以使应用程序更快,同时消除托管后端的成本。这需要将数百个包含数万行业务逻辑的 API 端点从 Python 迁移到 JavaScript,而我并不期待这样做。

一时之间,似乎已经没有办法摆脱这种僵局了。该应用程序及其代码库看起来就像一头巨大的大象,只能缓慢、小步前进,而且根本不愿意移动。

走向人工智能

每次在 VS Code 中打开代码库时,我都会遇到很大的阻力,因为涉及的工作量实在是太多了。

给 Web应用程序“减肥”

然后,几天前,我突然意识到,通过“减肥”我可以走得更快。

我可以从屏幕上删除不必要的小部件和按钮,将其迁移到新堆栈(幸运的是,Next.js 支持渐进式迁移),然后再添加回删除的元素。

接下来的事情,只能用“屠杀”来形容:

苹果iphone se 4曝光采用6.1英寸lcd屏

我并没有打算删除三分之二的代码库。我想删除足以开始迁移一个模块的内容。

于是,我在 Google Analytics 中查找了过去30天内每个模块的页面访问量,以确定从哪里开始。

虽然我知道某些页面的访问频率低于其他页面,但我惊讶地发现有些模块占页面访问量的比例不到0.1%。这意味着我可以完全删除它们,而不会影响99.9% 的用户。我可以删除包含数十个文件和数千行代码的整个目录。

当我从应用程序的其余部分中删除很少使用的模块及其入口点时,慢慢地发现应用程序变得越来越简单,选项卡、页面和菜单项越来越少。删除未使用的代码也感觉很好。

随着代码库变小,我对迁移所经历的阻力和焦虑也开始减少。最初我对删除我们花了几周或几个月构建的模块感到难过,但我知道我总能从 Git 历史记录中取回我将来需要的任何内容。

删除很少使用的整个模块后,我继续删除占流量不到0.5% 的各个屏幕和弹出窗口。我再次惊讶地发现可以删除数百个文件而不影响99.5% 的用户。事实上,这对他们产生了很好的影响。五个选项卡变成了三个,然后是两个,然后是一个,此时,选项卡可以从页面中完全删除。现在许多页面都有更简单的结构和单一的主要操作。更少的 API 调用导致更快的页面加载和屏幕转换。感觉棒极了!

删除所有不必要的模块和页面后,我开始在 Google Analytics 中进一步挖掘,以确定剩余页面上的功能的使用频率。

我发现了一些很少使用的功能、几乎从未点击过的按钮以及从未见过的菜单项。所以,我开始删除它们。我拿走的越多,我就越喜欢剩下的。我删除了几个侧边栏、下拉菜单、按钮、小部件、弹出窗口以及支持它们所需的内部应用程序状态和条件逻辑。这也使得代码更容易理解,这应该会进一步简化迁移。最初看似需要几个月的努力,现在感觉就像我可以在几周内完成的事情。

总结

沉没成本谬误和损失厌恶是人类的偏见,使我们很难放弃不再需要的东西。

我仍然担心我可能拿走了太多或删除了一些重要的东西,但分析表明事实并非如此。正如今天访问该网站的用户数量与清理之前一样,他们可以(并且正在做)几乎他们之前所做的所有事情。新用户无疑会发现该平台更易于导航且更易于使用。

我有多少其他应用程序可能会受益于每隔几年删除70% 的代码。它将降低维护开销,使他们能够更快地移动,减少加载时间,并运送更小的软件包,同时改善用户体验并改进他们的软件。

“完美的实现不是在没有什么可以添加的时候,而是在没有什么可以删除的时候”——Antoine de Saint-Exupery


返回网站首页

本文评论
中国移动《梧桐大数据开放平台》入选2023年中国数字化转型优秀案例
2023/5/27 10:25 中国移动《梧桐大数据开放平台》入选2023年中国数字化转型优秀案例   2023年5月25日,工业和信息化部新闻宣传中心(人民邮电报社)与山东省通信管理局共同...
日期:05-27
刘作虎晒一加12真机:用标准版超越友商Pro旗舰_oneplus刘作虎
快科技12月4日消息,今晚一加召开了12周年围炉夜话活动,刘作虎亲自现身跟大家互动。值得注意的是,刘作虎还在台上掏出了一加12真机,晒出了这款将在明天发布的旗舰,并表示自己非常...
日期:12-05
张勇陪同 马云现身阿里云总部_阿里张勇架构调整
【】6月21日消息,社交网站有视频流出,20日下午,马云现身阿里云云谷园区,现任阿里云智能集团董事长兼CEO张勇陪同,二人与偶遇的园区员工们打招呼,还光临了园区的咖啡馆,一起喝咖啡,聊...
日期:09-23
如何选择性价比高的国内CDN网络服务商_如何选择性价比高的国内cdn网络服务商品牌
作为一个网站运营管理员,为了提升网站的访问速度和用户体验,选择一家性价比高的CDN网络服务商非常重要。在国内,有很多CDN网络服务商可供选择,但是如何选择一家性价比高的呢?下...
日期:03-10
梅西的安保「球迷冲进球场抱梅西 保安是否被辞退?公司回应:等官方结果」
在昨天的阿根廷、澳大利亚比赛中,现场出现了戏剧性的一幕,一位球迷冲破了现场防护,冲进场内拥抱了梅西,还和大马丁击了个掌,看的现场球迷都热血沸腾。这件事也引发了网友的激烈讨...
日期:06-16
苹果官方首次直播却不带货,背后原因值得深思「苹果 直播带货」
苹果天猫官方旗舰店的直播活动虽然已经结束,但其影响却仍在持续。这次直播是苹果品牌在全球范围内首次尝试的直播方式,这次直播并没有什么带货促销,只是介绍了产品本身。但仍然...
日期:06-02
快手推出“快看新车计划” 累计超1000位新车创作者参与_快手汽车
10 月 8 日消息,近日,快手汽车启动“快看新车计划”,该计划是快手汽车针对新车内容建设推出的专项扶持计划,面向新车领域创作者提供一系列内容扶持、流量激励及创作者服务。同时...
日期:10-09
百度网盘登录数量「百度网盘:用户数突破8亿 用户存储数据总量超1000亿GB」
11月25日 消息:今年是百度网盘十周年,百度今日公布数据称,截至目前,百度网盘用户数已突破8亿,用户存储数据总量已超过1000亿GB,年均增长60%。百度网盘通过手表、车机、耳机等共计...
日期:11-29
极氪回应“保险补贴调整”:用户实际权益以下定时权益为准_极氪保修政策
快科技11月24日消息,极氪官方回应了保险补贴调整”消息,目前并没有调整极氪001的购车权益政策。针对有客户反馈的,花25.9万下定一辆极氪001,得知现车补贴权益从5千涨到了1万元的...
日期:11-24
科技补贴政策申报难?3W推出线上申报工具「袋鼠申报」
  为缓解科技企业在创新研发中的资金压力,政府每年投入数万亿元,以各类形式的补贴政策,鼓励企业坚持创新。但在现实困境面前,科技中小企业却屡屡与政策红利擦肩而过。对此,3W...
日期:05-14
恒生指数收跌逾2%「恒生指数开盘跌0.07% 云音乐跌超2%」
查看最新行情 藏品分享宣讲会  讯 9月15日上午消息,香港恒生指数开盘跌0.07%。恒生科技指数跌0.34%。云音乐跌超2%,网易跌超1%,小鹏汽车跌近...
日期:09-15
爱奇艺10月1日起增设会员拉新分账、取消平台定级_爱奇艺会员制度什么时候推出
  9月28日,爱奇艺宣布,10月1日起,爱奇艺剧集、动漫、儿童、纪录片领域将正式应用全新分账合作模式。新模式将在原会员观看时长分账基础上,增加会员拉新分账。同时,取消平台对内...
日期:09-30
今天杭州亚运会倒计时100天!首次推出数字火炬手:人人都能参与_杭州亚运会数字火炬是什么
6月15日消息,杭州亚运会将于2023年9月23日至10月8日举行,名称仍为杭州2022年第19届亚运会。今天就是杭州亚运会倒计时100天了,今日将在世界文化遗产良渚古城举行亚运会火种采集...
日期:06-15
iPhone SE4曝光:6.1寸刘海屏预定真香机「苹果se有刘海屏吗」
iPhone 14被指诚意不足而且定价偏高,或许你可以考虑一下iPhone SE4了。据Display Supply Chain Consultants(DSCC)分析师罗斯·杨(Ross Young)称,第四代iPhone SE将采用6.1英...
日期:10-21
移动被曝拨电话拉联通用户转网:官方回应来了_移动转联通携号转网怎么办理话费
自从携号转网开启后,有运营商为了最大限度转化客户,甚至还有客服打电话给其他运营商用户推荐套餐。腾讯最成功的产品近日就有一位陕西西安的联通用户表示,自己接到了一个自称是...
日期:03-01
趣店目标从大学生转至宝妈,罗敏的预制菜背后仍涉金融借贷业务
作者/吕倩   在微博搜索“罗敏”,显示页面顶端仍是趣店创始人罗敏在微博投放的广告“趣店预制菜”。与之形成鲜明对比的是,广告下方即是冲上热搜的词条“罗敏到底得罪了多少...
日期:07-31
“村BA”现场村草村花“蹦苗迪” 网友:现场太嗨梯子都不够用「村花舞蹈」
3月26日,"村BA"总决赛在台盘村圆满结束。在比赛开始前三十分钟,主持人将"村BA"变成了一个大型舞台,让村里的年轻人跟着音乐一起跳起了苗族传统舞蹈"蹦苗迪",现场气氛火爆,吸引了...
日期:03-27
桌面风暴来袭 百度浏览器1.3正式版发布
  一直以来,百度坚持为用户提供最好的、符合用户需求的互联网产品,尤其近期人气直线蹿升的百度浏览器,在智能化和安全性等方面表现优异的同时,通过打通开放平台,为网民提供超...
日期:07-23
红魔电竞平板发布:骁龙8 旗舰 跑分第一
红魔电竞平板在今天正式亮相。该平板搭载了高通第一代骁龙8 移动平台,支持5G智能通信。这个芯片采用了台积电制造的4nm工艺,采用了"1 3 4"的三层级架构设计。苹果公司ceo乔布...
日期:07-05
贾跃亭又交车!全球最大美国万圣节服装供应商集团创始人喜提FF 91
快科技10月1日消息,贾跃亭又交车了,这也是自该车量产以来交付的第四辆新车。据法拉第未来官方,就在今日,FF向FFIE长期投资人、全球最大的美国万圣节服装供应商的集团创始人交付...
日期:10-01