【问题标题】:How to explain the advantages of refactoring spaghetti code?如何解释重构意大利面条代码的优势?
【发布时间】:2016-02-18 14:30:15
【问题描述】:

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

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

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

【问题讨论】:

标签: language-agnostic refactoring


【解决方案1】:

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

重构的目的是使代码更容易更改,即更便宜。 (“维护”只是“改变”的一个子集。)

就在Fowler's definition of refactoring 中:“名词:对软件内部结构所做的更改,以便在不改变其可观察行为的情况下更易于理解且修改成本更低”。而“更容易理解”的重点是让修改成本更低。没有人付钱让程序员只是坐在那里理解事物,而对他们的理解无所事事。

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

  • 当您需要修复错误或添加功能到您的因数不足的程序时,您需要额外的时间来了解更改的影响。那段时间是要花钱的。
  • 当您更改因式分解不佳的程序时,您更有可能做得不好:引入回归,或仅部分修复错误(如果它在重复的代码中),或不实现新功能以及如果代码更易于使用,您将拥有。所有这些都会降低您产品的质量,这会导致您花钱
    • 销售额下降或(如果是内部工具)使用该工具的次数减少,从而导致该工具预期提供的效率下降
    • 更多错误修复和其他支持费用
  • 由于回归风险或其他更改成本,您可能决定根本不进行某些更改。同样,这会降低您的产品质量,从而导致您花钱。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2012-01-26
    相关资源
    最近更新 更多