首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否存在重构成本超过重写成本的程度?

在软件开发过程中,重构和重写是两种常见的代码优化方法。重构是对现有代码进行调整和优化,以提高代码质量和可维护性,而重写则是从头开始重新编写软件。重构通常需要较少的时间和成本,但可能会带来一定的风险,而重写则可能会带来更好的结果,但需要更多的时间和成本。

在某些情况下,重构的成本可能会超过重写的成本。这通常是因为重构需要开发人员对现有代码有深入的了解,并且需要投入大量的时间和精力来进行调整和优化。而重写则可以从头开始,采用更先进的技术和架构,以提高软件的性能和可扩展性。

因此,在决定是否进行重构或重写时,需要根据具体情况进行评估和权衡。如果重构的成本确实超过了重写的成本,那么可以考虑采用重写的方法,以实现更好的结果。

推荐的腾讯云相关产品和产品介绍链接地址:

相关搜索:Java中的对象实例化是否存在每方法成本?在一个智能合约或多个合约中是否存在交易成本问题?糟糕的性能-在SQL Server 2012中,哈希连接占用了超过80%的查询成本是否有免费(或低成本)的名字和姓氏数据库?如何在同一sql查询中计算产品超过日期范围的平均和最新成本闭包的复杂性是否会影响创建它的性能成本?将代码拆分到主应用程序的单独库是否会增加成本?询问绘图缓冲区的模板缓冲区是否会增加性能成本(WebGL)?Here Fleet Telematics通行费Api中用于成本计算的vehicleWeight参数中可能存在错误使用云端或s3存储桶的每个边缘位置的成本是否会有所不同?是否将.php ext的.htaccess规则重写为不存在的.html?如果dataframe列还不存在,有没有一种计算成本更低的方法来添加它?是否存在PropertyGrid集合编辑器的“添加”按钮事件或重写?从主机(以太)上的其他智能合约调用已部署合约的函数是否可行(就天然气成本而言)?使用Spring webflux,与返回完全实现的Foo实例相比,返回Mono<Foo>是否可以减少序列化成本?在一个事务中对单个文档进行多次更新是否会在Firestore中分别产生每次更新的写入成本是否存在允许类的__init__创建另一个类对象的重写?现在的机器学习本质都是概率统计,那ChatGPT的形成,是否说明数据总量和低成本的大批量数据标注才是一个AI产品的核心竞争力?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ES VS CH,成本太高,效率太低?不存在的

,最主要的是,这些数据是否生成,是否加载都是可控的,用户需要知道合理的数据建模,而不是让系统自动推测数据类型 就好比方说,比较BMW的混动7系和常规动力的丰田陆巡的油耗,得出结论BMW在省油方面做得比丰田强...1.6G变为了1G,优化过后,膨胀比变为了0.7,因此,ES,并非那么的没有效率,只是看是否针对应用场景正确的配置了数据模型 我们在存储成本优先的情况下,甚至可以配置"index.codec": "best_compression...,我们不提取字段,全部保存在message当中,把index: false配置一下,可以看到索引大小缩小为3.3mb,几乎是原始数据的1/4 [在这里插入图片描述] 因此,如果我们愿意,我们可以有不同的方式来平衡存储成本和查询性能...另外一个和存储大小,成本有关的特性是ES上的新的Searchable Snapshot,通过该功能,我们可以: 节省一半Cold层的成本 以对象存储的成本,存储历史数据,并且可以检索 [在这里插入图片描述...有时,我们不一定强调快,能在更大的数据集上运行查询也是一个能力,通过ES最新的async search功能,结合searchable snapshot,ES集群可以对数十PB存在在对象存储上的数据进行检索

8K51

难以持续的SaaS产品如何解救?

没有经历过的人是很难想象这样的代价和成本的,迁移老客户,老客户劳筋动骨;不迁移老客户,老客户一定程度受忽视和伤害,影响口碑; 除非客户非常少,或者可以基本保证比较低成本的全部迁移,笔者很不建议另起炉灶新开发一套...如果在短时间内很难有合适的人,也最好有一个外部的顾问来进行一定程度的把关。  2: 将理想的产品形态大致的设计出来。...实际上所谓的重构,很多时候都是一个个模块,一个个功能进行重写,将大的风险用敏捷,庖丁解牛的方式去分解掉。  4: 追求极致,不要重蹈覆辙,每次重构的机会都是一次重生的机会。...5: 尽最大努力的做减法,每一次成功的减法都是一次胜利。 对于臃肿系统的重构,在重构重写过程中,一定要想尽一切办法做减法。...每次迭代升级,重构后的新版本体验需要大大超过原来的版本,或者有能够解决客户痛点的新功能,用户才有动力升级。在设计安排每次迭代计划的时候,要充分的考虑用户升级的动力,否则会碰到很多阻力。

30730
  • 系统重构的未来:重构工具 Coca 一周年

    系统的必然之路:系统重构 or 重写 没啥说的,部分的系统都是要被重构或者重写的。那么另外一部分呢?他们被淘汰了——要么是产品,要么是公司,笑~。...如果系统不被指南,和进行频繁的代码级重构的话,那么系统被取代的速度就更快了。 重构 vs 重写 关于系统级别的重构,我们先要讨论的第一个问题其实蛮简单的:我到底是要重构还是重写?...对于重构而言,我们所要面对的是技术挑战;对于重写而言,我们所面对的是业务挑战。 重构的技术挑战 我们所面临的主要技术挑战是: 是否能确保过程的安全性?...即,支撑业务可扩展性 是否寻找最合适的重构技巧?比如通过 IDEA 的重构 如何让重构技能被传承?...是否能确保细小的业务功能不被遗失? 能否设计出更完善的业务知识管理体系? 系统重构的未来 在 Coca 编写完成之后,我发布了《系统重构与迁移指南》一份短小、精悍的重构手册。

    70440

    为什么不重构呢?

    重构是提高质量的重要工具。许多开发方法都依赖于重构,尤其是对于敏捷方法,在更多计划驱动的组织中也是如此。但事实上,是否以重构来处理设计中的某些问题呢?是否存在重构的障碍呢?...不重构的原因 存在质量问题而不进行重构的理由可以分为以下几类: 资源 对所需资源的关注是不进行重构的一个经常被提到的原因。...投资回报率 虽然重构可能会带来好处,但也有成本,投资回报率也必须考虑,例如“必须再次权衡成本和好处,在承担重构、重测试等方面的成本之前,必须明确收益。” 技术 项目的特点限制了重构的能力。...然而,对软件系统的测量表明,有些类具有很多方法,或者在层次结构中非常深。它就需要重构么? 实际上,工程师更倾向于限制类的深度,而不是方法的数量,但是当超过某个深度限制时,开发者倾向于不做任何事情。...实际上,重构的时机只是做出是否重构的判断时机。 另外,使用重构工具的两个好处是错误率更低,所需时间更少,因此好的工具支持应该在一定程度上解决开发人员的问题。

    30420

    软件编程概念与入门

    软件编程概念与入门 1.概要 2 项目开发流程 3.编程提升 1.概要 (1)软件编程为什么存在? 随着技术的发展,项目的复杂度与程序的复杂度骤增,导致编程实际与预期有所偏差。...(2)架构设计 架构相当于系统的奠基人,在技术选型上如果选择不对,对于项目影响颇深。需求正确、方案不对。技术升级是特别的迅速的,是否使用某种新的技术是项目架构师需要考虑的事情。...debug,unit test,function test,integration test, system test (8)项目的部署 3.编程提升 (1)代码特性 外在特性:可用性(用户学习使用的程度...重构的原则是不改变代码的行为,使代码维护性、扩展性更强。怎么判断?在代码中觉得很怪的地方。重构的级别有data、statement、method,class。重构的总方法就是一点点重构,一点点测试。...重写区别于重构,会改变代码的逻辑。

    64020

    该如何接手别人遗留下的代码?

    假设你遇到了修复遗留应用程序的问题,已经存在风险,并且不需要添加更多应用程序。采用本文方法的风险和成本将会比从头开始重写系统更低。 为什么不要重写代码 在我们开始之前,你应该先了解一些事项。...如果你需要修复遗留代码,那是因为你需要将风险降至最低;为什么你会故意采用无法量化的风险? 如何重构遗留代码 假设你不想面对大规模重写带来的成本和风险,那么如何重构代码呢?...假设我们正在重构 Web 应用程序,你已决定首先编写测试以验证是否可以在管理页面上列出用户。...但是,如果你仍在尝试从重写与重构之间做出决定,请记住,这种方法是一种成本相对较低且风险也较低的方法。如果它被证明是行不通的,你可能会冒很小的风险。如果改写证明不可行,那么你可能会花费公司一大笔钱。...修复遗留代码库虽不如送火箭上天一般高难度,但它确实需要一定程度的专业知识来转换现有的代码库。遗憾的是,大多数开发人员似乎对此技能并不感兴趣,他们似乎也并不想处理遗留代码库。

    58630

    高昂的PR,开源的困惑

    PR是开源社区的基石,正真实践了开源的益处:“人人贡献,人人受益”。 一个PR提出后的历程还是比较长的。如果很多人关注和讨论,可能促使你的PR早日受到项目维护者的关注,尽快合并进去。...但是项目一旦到大到一定程度后,合并PR的代价就会变得极为的高昂。因为项目大到一定程度,质量要求会变得很高,否则是没办法继续下去的。如果不控制好质量,很可能就需要重构才能让项目继续走下去。...而PR天生来源复杂,质量参差不齐,光review的成本就已经很高了,更别说反复的交流修改碰撞带来的时间代价,很多情况甚至review的人相当于重写了一遍。...第二个是,新的PR极容易造成regression,以前修好的问题又出现了,或者出现新的问题。所以这个时候合并一个新的PR基本已经很困难了,或者说远远已经超过了专门维护人员的成本。...这或许也是一个困境,我们总是希望人人都能够贡献,然而接受这种贡献的成本在到某个阶段就变得高昂了,这可能违反了我们的直觉。这和开源一样,最终还是需要商业的回馈,方能开花结果。

    38920

    老码农看到的技术债务

    当前可用的技术债务量化工具仅仅关注几个维度,比如代码债务和一定程度的设计债务和测试债务。对于同其它维度相关的问题,比如架构债务或文档债务,这类工具并没有提供全面的检测支持。...技术债务的现金衡量 当然,技术债务的货币化有助于了解技术债务的严重程度,提供了一种跟踪技术债务偿还进度的方法。不过,需要谨慎对待这些成本和工作量估计。...VC们可以以此判断向某项软件产品中投入资金是否理智。 有助于判断软件的支付能力,判断在重构和重写这二者之间做出选择 有哪些有效的方式可以用来将技术债务以金钱衡量呢?...防止技术债务产生的主要方法是了解开发团队存在的技术债务。开发团队必须了解技术债务,它的各种方面和类型,以及债务对他们的项目的影响。...它们的Bug会成为我们的Bug,安全漏洞也会成为我们的安全漏洞,错误决定会成为了我们的错误决定。 我们所使用其他软件的代码量可能会非常大,由此产生的技术债务也可能大,甚至超过自己所编写的代码量。

    92230

    腾讯新闻插件接入层重构实践:代码量锐减,迭代效率提升50%!

    之前的服务如果维护的好的话,其实本可以通过小步快跑的方式,分批次进行小范围的重构和优化,不需要花这么大的成本进行“重写”。...,维护难度大,且存在逻辑不一致问题; 03、“重写”设计 3.1 架构图 ✓ 接口接入业务网关 smartGW; 并借助网关的限流插件和安全拦截插件进行流量安全治理; ✓ 将6种 web...05、“重构”的时机 其实重写的收益不仅仅体现在上面的这些指标,更是在重写后的一年中,每次需求评审时,我们都能明显感受到其带来的便利。...经历过成本如此高的项目之后,大家自然希望下一次重写的时间能够尽量推迟。 那么,我们如何才能推迟下一次重写的时间呢?我的建议是随时进行真正的“重构”。...观测方法:定期调研使用的框架或库是否有更新;根据 codiumAI、工蜂 AI 等工具的建议进行检测和优化代码; 6. 技术栈或工具更新时 定期进行技术审查和代码评估,可以帮助团队识别需要重构的部分。

    14400

    如何接手别人的系统-遗留系统重建的道法术器势志(万字长文)

    还有一种特殊的风险是重写后的代码与原来的非常相似,因为要考虑复杂的需求场景,为了避免这一问题,就要从旧系统汲取到足够的知识,来判断该功能的实现是否河里了。...我在前后加了评估、总结,评估是为了确认是否有重构的必要,评估复杂度、影响范围以及工作量得出重构成本,从重构收益和风险。...如重构数据库,是否有数据库专家支持;重构Java Web 服务,团队是否有足够的Java 技术成员;要做重建护城河,构建自动化测试能力,是否有CI/CD基础,DevOps流程是否完善。...分析本身会对重构范围进行审视,如不能控制重构带来的风险,需要重新回到为什么要重构这部分内容当中去,是否重构的方案本身是不合理的,是否应该放弃重构,或者选择重写、重搭、迁移等其他方案。...结合工程实践经验来看,我们通常会在紧迫的时间内完成指定任务,按时交付,所以我个人的要求是不超过80行。

    74650

    【敏捷实践】推行TDD的思考

    软件成本等于开发成本与维护成本之和,而维护成本的增加主要就归咎于内部质量的糟糕。这里讲的内部质量包括:代码的可读性、可重用性、可扩展性等。当我们让开发人员为原有代码编写单元测试时,总是觉得举步维艰。...除非我们能够快刀斩乱麻,那对于这个系统而言,就不是维护,而是重写了。测试先行的开发至少在一定程度规避了这样的问题。即使代码的内部质量仍有所欠缺,但在足够覆盖率的保护下,我们要进行重构也变得更为简单。...若有测试保障,重构就变得安全。但尽可能地,我们还是希望运用工具提供的自动重构功能,这既提高了重构效率,也在一定程度下确保了重构的安全。...当一个人在掌控键盘时,另一个人就可以重点关注代码的可读性,看看代码是否散发出臭味。两个人的眼睛终归要更锐利一些,至少视野的范围更广泛。 及时重构是重构诸多实践中最重要的一点。...不要让重构成为你在未来偿还债务的杀手锏。越拖到后面,偿还债务的成本就越高。以重构而论,可能需要的重构能力就更强,因为重构变得复杂了。

    74360

    代码质量与技术债

    测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够。 设计与架构:是否高内聚、低耦合,依赖最少。...代码质量指的是代码内在的非功能性的质量,用户不能直接体验到这种质量的好坏,代码质量不好,最直接的“受害者”是开发者或组织自身,因为代码质量好坏直接决定了软件的可维护性成本的高低,例如重复代码会造成维护成本的成倍增加...,修改的代价很可能超过了重写的代价。...代码扫描工具中对应代码质量的每条扫描规则都对应着一个债务计算方法,有的规则是设定了固定的债务值,有的则根据违规程度有相应的计算公式。...当负债率达到100%时,即债务开始超过资产,资不抵债,这时就称这种情况为“技术破产”。当然,日常工作中碰到这种情况时,我们不会用这么吓人的术语,通常是打着“重构”的旗号重写一遍。

    3K73

    接手了一座年收入 2000 万美元的“屎山”,我到底该重写还是跳槽?

    作为中层管理人员或开发人员来执行变革是行不通的,而且会付出巨大的个人成本。...该公司最终对该技术团队再次进行了深度整顿,这个过程实际上花费了他们整个 D 轮融资以及 3 年的产品开发时间。” 也就是说不了解整个情况的话,一旦重写失败,沉没成本会相当昂贵。...可以试图解决一些性能和用户体验上的问题,比如利用现代框架重写前端,让管理层和客户兴奋之后,再逐步重构后端(此时,更多的测试覆盖率可能会派上用场)。...简而言之,如果领导层不了解他们处于不可持续的境地,并且不愿意投入时间和金钱来修复它,那么重写或重构的可能性为零。” 参考链接: https://news.ycombinator.com/item?...一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。

    28220

    技术债:人的因素

    「利息」继续借债,债务成本会越来越高,累积的利息会呈指数增长 —— 在技术债基础上继续引入技术债,会让事情变得越来越糟糕,引入新功能(软件资产)的时间会越来越长。...3) 当债务累积到一定程度,超过资产时,如果此时没有足够的自由现金流来偿还本息,那么个人或者公司可能不得不寻求破产保护 —— 当技术债太大无法通过重构来解决时(或者成本太高),此时重写是最好的方案。...其实在实际工作中,技术债的引入很大程度上是因为人和流程的原因,而流程是人制定和人来执行的,所以归根结底是人的原因。 首先说人的原因。...开发者是否对已有系统有足够的了解,往往决定了这个功能的质量。 那么,什么叫对已有系统有足够的了解?...很可能 reviewer 主要的精力都放在了基本的代码问题上,而没有功夫去管更重要的问题:接口设计是否合理,数据结构是否合理,逻辑是否有问题等。

    46320

    不畏移山,手机QQ技术架构升级变迁史

    具体来看,项目层面的挑战包括: 代码量庞大:手机端代码近千万行,形成了一个技术上的庞然大物。 测试复杂性高:测试用例众多,功能繁杂,且存在部分文档缺失的情况。...手机 QQ 是在发展了20多年进行彻底重构,难度空前,没有资料可参考。 IM 全链路架构重写升级:解决陈年技术债,优化消息架构,平稳迁移用户历史数据,并提升消息性能。...移动端和桌面端不同,活跃用户全年在线,有些手机本地纯文本消息的 DB 文件超过10G,加上富媒体、文件等,总数据量超过100G,而且移动端又有存储空间小、功耗敏感、后台杀进程等多方面限制,需要设计出一套周密的升级策略...3.4 核心功能优化提升 不仅是消息,在 NT 架构重写升级过程中,对 QQ 核心功能也一起做了更彻底的重构,手机 QQ 原生功能进行了大规模解耦,通用的部分进行优化并下沉为统一的 NT-Runtime...04、总结 在手机 QQ 超过20年的发展历程中,应用功能的不断扩展和代码量的持续增长积累了巨大的技术债务,给原有架构带来了沉重的负担。

    95252

    《JAVA SE》面向对象编程(上篇)

    有的时候客观事物之间就存在一些关联关系, 那么在表示成类和对象的时候也会存在一定的关联. 2.1 背景 当类和类之间满足:一个类is a 另一个类,一定存在继承关系。...一般我们不希望出现超过三层的继承关系. 如果继承层次太多, 就需要考虑对代码进行重构了。 如果想从语法上进行限制继承, 就可以使用final关键字。...Duck重写了Bird的eat方法~~~ 关于重写的注意事项: 重写和重载完全不一样. 不要混淆(思考一下, 重载的规则是啥?)...普通方法可以重写, static 修饰的静态方法不能重写 重写中子类的方法的访问权限不能低于父类的方法访问权限....例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写 3.4 多态的好处 1) 类调用者对类的使用成本进一步降低 封装是让类的调用者不需要知道类的实现细节

    28010

    处理遗留系统

    在时间允许的情况下,我会考虑对相关代码进行一些小的重构,例如提取方法或提取类等。虽然这些重构不能改变遗留系统的本质,但至少可以提高代码的可读性,并能在一定程度下去除代码重复。...事实上,在软件成本中,维护成本所占的比例远远大于开发成本。...为遗留系统绘制包图(Package Diagram)同样非常重要,它既能帮助你理解遗留系统的结构,又能为我们找到系统中可能存在的双向依赖和循环依赖,找到分解不合理的包,这就为我们的系统重构奠定了良好的基础...只要不是更改开发平台,通常情况下,我们不会考虑重写遗留系统。如果需要重构遗留系统,就必须采取“分而治之,小步前进”的策略。可以首先选择实现较为容易,或者独立性较好的模块进行重构。...必须对整个遗留系统进行审慎的分析,并结合具体情况考虑这项工程的复杂度、成本与预算,了解团队的重构与设计能力。

    65440

    过渡策略

    ,风险大 极高人力成本维护两个应用 冰激凌策略 介绍 通过将单体应用的不同组件分解到单独的服务中,从而从单体应用逐步过渡到微服务。...这个过程是渐进的,有时会同时存在单体应用和微服务。...优点 是可以在不影响服务正常运行和终端用户体验的情况下,以较低的风险逐步迁移到微服务 缺点 需要比较长的执行周期 乐高策略 介绍 适用于那些因为老的单体应用过大或者过复杂而无法重构的组织。...优点 该策略的优点是无须对原来的单体应用做过多改造,而且构建新的微服务应用很快。 缺点 是原来的应用还存在问题,需要创建新的API来支持面向微服务的功能。...乐高策略有助于在大型项目重构中换取一些时间,但同时伴有很大的风险。 核按钮策略 介绍 这种策略比较少用,它是指将整个单体应用全部重写为微服务。

    54410

    临时方案传染性

    项目中存在着各种各样的技术挑战:文档的匮乏、缺乏经验丰富的开发者、缺乏领域专家、相关领域的专家无法提供技术支持……。总之,一系列的技术难点使得项目开发越来越困难。...上线时间影响了我们的技术决策 修正缺陷成本 而这些相关问题的讨论,已经是一个相当成熟的领域: 相关的学术讨论会的讨论结果表明,在大型项目的早期需求阶段进行的投稿,以及对设计的确认和验证可以把『成本-修改...对于业务成功的团队,它们选择了更好的方案:重写,又或者是采用新的架构(重写的一种方言),比如微服务或者 DDD 方式。...更多的相关内容可以见:《系统重构与迁移指南》 ( https://migration.ink/ ) 渐进式重构/修正 主要也是采用缓慢的方式,慢慢来确保架构能行驶在正确的路上。...嗯,同上,可以参考《系统重构与迁移指南》。 其它 架构设计的程度与腐化速度是成反比的。(当然,避免过度设计) 没有银弹。

    36030

    特斯拉、微软、谷歌、Meta等大厂传裁员;AMD与英特尔CPU被曝恐存在内核内存漏洞,缓解措施将增加12%-28%的计算成本

    AMD与英特尔被爆CPU恐存在内核内存漏洞,缓解措施将增加12%-28%的计算成本 近日,苏黎世联邦理工学院研究人员发现,英特尔和AMD 的部分微处理器易受新发现的推测性执行攻击,从而泄露密码数据和其他敏感材料...据内部备忘录要求,“每位经理都要考虑团队中的每一个人是否为Meta带来了价值。”...,然后被探测出来后,不单单是储存在云盘上的会被和谐......就连本地文件也难逃一谐。”...截止发稿前,该话题微博阅读量已超过2亿次。...目前,该话题在知乎引发热议,多个回答认为该费用具有吸引力,可在一定程度上提高年轻人科研的动力,促进科技发展。(知乎) 更多内容,点击下方关注: 扫码添加 AI 科技评论 微信号,投稿&进群:

    57120
    领券