Language agnostic 如何解释重构意大利面代码的优势?

Language agnostic 如何解释重构意大利面代码的优势?,language-agnostic,refactoring,Language Agnostic,Refactoring,我的任务是重构一个充满重复代码、耦合模块(即使是代码作者也害怕更改任何东西,因为他不知道这可能会产生什么影响)和过于复杂的数据库(250多个查询,可以替换为大约20个)的工具 项目客户只知道工具很难维护和更改,但没有技术专长 我如何简单地解释新工具的优点:代码库更小、重用代码、分离组件和遵守代码约定?您几乎回答了自己的问题:) 重构的目的是使代码更容易修改,也就是更便宜。(“维护”只是“更改”的子集。) 就在这里:“名词:对软件内部结构的一种改变,使其更容易理解,并且在不改变其可观察行为的情况下

我的任务是重构一个充满重复代码、耦合模块(即使是代码作者也害怕更改任何东西,因为他不知道这可能会产生什么影响)和过于复杂的数据库(250多个查询,可以替换为大约20个)的工具

项目客户只知道工具很难维护和更改,但没有技术专长


我如何简单地解释新工具的优点:代码库更小、重用代码、分离组件和遵守代码约定?

您几乎回答了自己的问题:)

重构的目的是使代码更容易修改,也就是更便宜。(“维护”只是“更改”的子集。)

就在这里:“名词:对软件内部结构的一种改变,使其更容易理解,并且在不改变其可观察行为的情况下修改更便宜”。“更容易理解”的目的是使修改更便宜。没有人会付钱给程序员,让他们只是坐在那里理解事情,什么也不做

糟糕的代码在很多方面都要花钱:

  • 当您需要修复程序中的一个bug或向功能不完善的程序中添加一个功能时,您需要额外的时间来理解更改的影响。时间是要花钱的
  • 当你改变你的程序时,你很可能会做得不好:引入一个回归,或者只是部分修复一个bug(如果它是在重复的代码中),或者没有实现你的新特性,如果代码更容易使用的话。所有这些都会降低你的产品质量,这会因为
    • 减少销售或(如果是内部工具)减少使用该工具,并导致该工具预期提供的效率损失
    • 更多错误修复和其他支持成本
  • 由于回归风险或其他变更成本,您可能决定根本不进行某些变更。同样,这会降低产品的质量,这会让你花钱
您甚至可以通过估算每次更改代码时重新调查代码的成本、销售或使用损失的成本、由于bug而增加的支持成本以及不进行更改的机会成本来评估代码库的质量。平衡这一点和重构的成本


旁注:您并没有特别提到测试,所以为了完整起见,我应该提到重构意味着自动化测试,这与重构一样,是一项具有成本和收益的投资。如果不进行测试就进行任何重要的重构,您肯定会发疯。

您几乎回答了自己的问题:)

重构的目的是使代码更容易修改,也就是更便宜。(“维护”只是“更改”的子集。)

就在这里:“名词:对软件内部结构的一种改变,使其更容易理解,并且在不改变其可观察行为的情况下修改更便宜”。“更容易理解”的目的是使修改更便宜。没有人会付钱给程序员,让他们只是坐在那里理解事情,什么也不做

糟糕的代码在很多方面都要花钱:

  • 当您需要修复程序中的一个bug或向功能不完善的程序中添加一个功能时,您需要额外的时间来理解更改的影响。时间是要花钱的
  • 当你改变你的程序时,你很可能会做得不好:引入一个回归,或者只是部分修复一个bug(如果它是在重复的代码中),或者没有实现你的新特性,如果代码更容易使用的话。所有这些都会降低你的产品质量,这会因为
    • 减少销售或(如果是内部工具)减少使用该工具,并导致该工具预期提供的效率损失
    • 更多错误修复和其他支持成本
  • 由于回归风险或其他变更成本,您可能决定根本不进行某些变更。同样,这会降低产品的质量,这会让你花钱
您甚至可以通过估算每次更改代码时重新调查代码的成本、销售或使用损失的成本、由于bug而增加的支持成本以及不进行更改的机会成本来评估代码库的质量。平衡这一点和重构的成本

旁注:您并没有特别提到测试,所以为了完整起见,我应该提到重构意味着自动化测试,这与重构一样,是一项具有成本和收益的投资。如果没有测试就进行任何重要的重构,您肯定会发疯