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

时间:2016-02-18 14:30:15

标签: language-agnostic refactoring

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

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

我如何用简单的术语解释具有较小代码库,重用代码,解耦组件和遵守代码约定的新工具的优势?

1 个答案:

答案 0 :(得分:0)

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

重构的目的是使代码更容易,即更便宜。 ("维护"只是"更改"的一部分。)

它位于Fowler's definition of refactoring:"名词:对软件内部结构的改变,使其更易于理解,修改成本更低而不改变其可观察的行为#34; 。而且更容易理解"是为了使修改更便宜。没有人支付程序员只是坐下来理解事物而不理解他们。

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

  • 如果您需要修复错误或为功能较差的程序添加功能,则需要花费额外的时间来了解更改的影响。那段时间需要花钱。
  • 当你改变你的不良分解程序时,你更有可能做坏事:引入回归,或仅部分修复错误(如果它是重复的代码),或者不实现新的如果代码更容易使用,您将拥有该功能。所有这些都会降低产品的质量,这会花费你的钱
    • 减少销售额或(如果它是内部工具)减少使用该工具并因此导致该工具旨在提供的效率损失
    • 更多错误修复和其他支持费用
  • 由于存在回归或其他变更成本的风险,您可能决定不进行任何更改。同样,这会降低您的产品质量,这会花费您的钱。

您甚至可以通过估算每次更改代码时重新调查代码的成本,销售或使用损失的成本,由于错误导致的额外支持成本以及机会成本,来为代码库的质量提供现金价值如果更容易这样做,你不会做出改变。平衡与重构的成本。

附注:你没有特别提到测试,所以我应该提到完全性,重构意味着自动测试,这就像重构是一项有自己成本和收益的投资。你肯定是疯做没有任何测试显著的重构。