代码膨胀会破坏开发操作吗,它将如何影响编译时间?

news2024/11/28 11:34:57

在这里插入图片描述
Incredibuild 正潜心研究公司以及客户的未来发展趋势。

过去的一年举步维艰,但聪明的企业总是能够抓住机遇,将大部分业务自动化,保持敏捷度和竞争力,最佳的案例就是游戏工作室。这一年来,用户对新游戏或新版本的期待达到前所未有的高度,希望发布速度越快越好。事实证明,他们没有辜负这个期待。

比如 Milestone 在新冠肺炎封锁期间发布 MotoGP ™ 20。

在 2021 年的时候,我无意中看到这篇文章使用了 Sourcegraph 和 Dimensional Research 的报告。报告显示 33% 的开发人员(在 500 多名受调查者中)比 2010 年多管理了 100 倍的代码;18% 的开发人员管理的代码比 2010 年增加了 500 倍!

在这里插入图片描述
图片来源: Sourcegraph

这意味着每年要多出 2 到 15 倍的代码行。

诚然,这并不意味着我们写出来的代码比十年前多出 100 倍。但改变已然发生,比如大规模的开源应用、各种各样的设备、环境等等。

在这里插入图片描述
图片来源: Sourcegraph

但对我来说,这是一个改变游戏规则的时刻,任何软件开发领域的人在为未来做准备时都需要考虑这一点。

代码膨胀的趋势愈发急剧。如果这种趋势是合理的,两年内将翻一倍甚至两倍,这也将给资源和基础架构带来负担。

软件开发第一定律

研究人员 Gerard J. Holzmann 在谈到这种代码膨胀趋势时,说道:“不论是否有合理的需求,软件会随着时间的推移而增长,我们可以称之为软件开发的第一定律。”既然 Holzmann 把这种代码膨胀的趋势称为软件开发的第一定律,也说明了这一趋势的重要性。Holzmann 深入探索了这个理论,为了证明这种不合理的代码膨胀,他研究了 Unix® 和基于 Unix 的系统中称为 true 的命令。随着时间的推移,这个命令从 0 增长到 22896,这也证明了他的观点。此外,也说明了即便是最琐碎的代码也会膨胀。试想,当涉及到复杂产品时,情况将多让人悲观。

影响迭代频率

那些不愿意使用最新技术,对代码膨胀一无所知的公司,将被埋没在混乱之中,永无出头之日。想象一下,系统变成了无难以维护的遗留系统,太多的东西无法处理。更可怕的是,还有错综复杂的依赖关系!当涉及到膨胀的代码或遗留系统时,依赖关系最让人头疼。根据这份报告,57% 的被调查者指出有过因依赖关系理解缺失导致代码破坏的经历。

在这种情况下,快速编译攸关生死,从长远来看,我推测会有更多的硬件帮助解决编译时间的问题。所有这些膨胀的代码行都必须设法进行编译,并且加速高频地进行。另外,速度是关键,十多年前就已如此;本报告中的绝大多数受访者(92%)表示,在过去十年中,加速发布代码的压力有所增加。因此,不仅仅是代码膨胀导致了加速编译需求的提升,高速的迭代周期和发布速度更是对编译速度提出了更高的要求。

在这里插入图片描述
图片来源: Sourcegraph

决定产品质量

更多的代码意味着更大的测试覆盖范围,包括单元、API、集成、功能测试、安全漏洞检查、代码质量分析或中间的操作等等。

当涉及到自动化测试覆盖率时,当今大多数软件公司都深陷“技术债务状态”。在全自动化 CI/CD 发展势不可挡的情况下,如果想要保持频繁和高质量的发布,广泛的测试覆盖必不可少。

在这个代码膨胀的时代,有几种方法可以支持持续集成,并处理技术债务的问题。我现在正在研究的一个非常有趣的途径是测试生成器。了解到 Diffblue 开发的一个新的人工智能工具,可以自动编写 Java 的单元测试(他们还提供了这个产品的免费社区版,是用 IntelliJ 创建的)。

而随着人工智能工具定期自动生成数以万计的测试单元,测试膨胀也即将来临,测试量将达到现在的 100 多倍。

现有的工具无法处理代码膨胀(当然,除了我们)

报告指出,85% 的受访者同意“现有的工具并不是为大规模处理大型代码库而设计的。”这也是我为 Incredibuild 自豪的原因之一,即我们顺势而为,以领先的技术高效应对代码膨胀。Incredibuild 让代码构建速度大幅提升。在自动化测试覆盖率大幅增长的趋势下,Incredibuild 也能完美地满足客户需求,以最快的速度实现最好的产品。

可以适当做些代码清理

除了用正确的技术武装自己(这正是我们在这里的目的),从技术来说,最好检查一下可否删除过时的代码。诚然,这需要相当多的努力和毅力,且不是每个人都能做到。有些情况不适合代码清理,或者根本不值得这样做。但在合适的情况下,代码清理还是值得一试。我知道很多开发人员都避免更新代码,因为害怕破坏代码(正如报告所示)。这种想法是可以理解的,但代码膨胀更让人害怕。

准备好了吗

理解代码膨胀是一件很重要的事情。代码就在这里,不断增长,它可能会对开发周期、发布时间、迭代频率和产品质量产生严重的影响。因此,大家需要在基础设施、工具和流程上进行部署、投资,以解决代码膨胀的问题,做好充分准备。

点击了解 Incredibuild 加速 C/C++ 构建编译的解决方案,并获取试用 License!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 基础:标准库 -- math (数学函数)

1. 官方文档 math --- 数学函数 — Python 3.12.2 文档 cmath --- 关于复数的数学函数 — Python 3.12.2 文档 Python 中,可以使用内置的数学运算符,例如加法 ()、减法 (-)、除法 (/) 和乘法 (*) 进行简单的数学运算。不过,更高级的运算&a…

Python | Leetcode Python题解之第3题无重复字符的最长子串

题目: 题解: class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 哈希集合,记录每个字符是否出现过occ set()n len(s)# 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没…

Dubbo 原理及使用详解

嗨,亲爱的童鞋们!欢迎来到这次关于Dubbo的探险之旅。在编程的世界里,我们时常需要处理分布式系统的问题,而Dubbo作为一款开源的分布式服务框架,正是为了解决这类问题而生。本篇博客将深入浅出,带你领略Dubb…

transformers微调模型后使用pieline调用无法预测列表文本

初学transformers框架 使用trainer简单训练一个文本分类模型三个epoch后 使用piepline调用model 和tokenizer后 发现 传入列表文本后 输出就变得不正常了,为么子哇 如下图

常见的DC电源模块故障及解决方法

BOSHIDA 常见的DC电源模块故障及解决方法 DC电源模块广泛应用于各种电子设备中,为其提供稳定的直流电源。然而,由于长期使用或其他原因,DC电源模块有时会出现故障。本文将介绍一些常见的DC电源模块故障及相应的解决方法。 1. 输出电压异常&a…

如何使用免费的ChatGpt3.5

如何使用免费的ChatGpt 最近免费的gpt3.5很多都不怎么行了实在是太给力了尾声 最近免费的gpt3.5很多都不怎么行了 原因是什么呢?因为openai已经取消了免费的5刀赠送,那么这些人手上的免费的sses-key 用完后,就基本上全军覆没了,再…

探索http-vue-loader的奥秘:原理、使用方法、在Vue开发中的应用

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SpringSecurity学习总结(三更草堂)

SpringSecurity安全框架的核心功能是认证和授权: 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户。 授权:经过认证后判断当前用户是否具有进行某个操作的权限。 一般来说中大型的项目都是使用SpringSecurit…

无尘卷轴布:保障洁净环境的关键利器

在现代科技高度发达的今天,许多行业对于环境洁净度的要求越来越严格,比如半导体制造、医疗器械生产等。而在这些领域中,无尘卷轴布成为了一项至关重要的辅助工具,其独特的设计和材质特性,为保障洁净环境做出了突出贡献…

如何备份 Outline 导出的 Markdown 文件

前面,我撰写了两篇文章,介绍了: 《如何在本地环境安装 Outline》《使用 Outline 搭建企业、个人知识库面临的问题》 今天,我们继续这个话题。使用 Outline 搭建知识库,如何备份自己知识库内的资料。 Outline 底层使用…

【教学类-09-03】20240401细线迷宫图02(A4横版一页-2份竖版)

作品展示: 背景需求: 【教学类-09-02】20240331细线迷宫图01(A4横版一页1份横版)-CSDN博客文章浏览阅读779次,点赞28次,收藏6次。【教学类-09-02】20240331细线迷宫图01(A4横版一页1份横版&…

Sentinel入门Controller自动定义为资源

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流…

【opencv】教程代码 —ShapeDescriptors

检测和显示图像的轮廓 在图像中搜索并显示轮廓边缘多边形、轮廓矩形和包围圆 获取包含检测到的轮廓的椭圆和旋转的矩形 图像轮廓检测和轮廓凸包 计算图像中的轮廓的矩(包括面积、重心等)并进行显示 创建和绘制一个多边形图像然后计算并显示图像上每个点到…

使用Vue3组件的计算属性

计算属性在Vue.js的computed选项中定义,它可以在模板上进行双向数据绑定以展示出结果或者进行其他处理。 通常用户会在模板中定义表达式,非常便利,Vue.js的设计初衷也是用于简单运算。但是在模板中放入太多的逻辑,会让模板变得臃…

项目管理中,项目延期的这些原因,你经历过几个

在项目管理过程中,项目延期是一种常见的现象,深入了解项目延期的原因,并制定相应的应对策略,对于提高项目管理的效率和成功率至关重要。 项目延期的主要原因: 1、估计不足:在项目初期,对项目…

iOS网络抓包工具大曝光:深入了解常用工具的工作原理与应用场景

摘要 本文将深入探讨iOS平台上常用的网络抓包工具,包括Charles、克魔助手、Thor和Http Catcher,以及通过SSH连接进行抓包的方法。此外,还介绍了克魔开发助手作为iOS应用开发的辅助工具,提供的全方面性能监控和调试功能。 在iOS应…

DC-DC芯片D1509, 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。

一、应用领域 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。 二、功能介绍 D1509是芯谷科技推出的一款输入耐压40V、输出电压1.23-37V可调、输出电流最大2.0A的高效率、高精度DC-DC芯片,其输出电压有固定3.3V、5.0V和12.0V的版本,…

Pygame基础8-碰撞

Collisions 在Pygame中,我们使用矩形来移动物体,并且用矩形检测碰撞。 colliderect检测两个矩形是否碰撞,但是没法确定碰撞的方向。 Rect1.colliderect(Rect2) # collision -> return Ture # else -> return Falsecollidepoint可以…

中视频双去重,一键多平台,可达日入2000+

【核心】将不可复制的飞书文档,用大模型二创,进而生成思维导图(视频),以下全过程使用工具半自动完成。 【飞书】https://puojikpj98.feishu.cn/docx/KUNad8Y0UoFHEexMyAfc7sA1nQf 【文案】 中视频双去重与多平台发布项…

“315晚会”中的“网络水军”是什么?

水军一词,源自网络用语,通常指的是一群在网络上被雇佣来进行特定活动的人群。他们的主要任务通常是在各种社交媒体平台、论坛或者评论区发表大量的帖子、评论或者回复,以此来达到某种特定的目的。这些目的可能包括提升某个产品、服务或者个人…