【发布时间】:2016-02-18 14:30:15
【问题描述】:
我的任务是重构一个充满重复代码、耦合模块(即使是代码作者也害怕更改任何东西,因为他不知道它可能会影响什么)和过于复杂的数据库(250 多个查询可以用大约 20 个替换)。
项目客户只知道该工具难以维护和更改,但没有技术专长。
我如何简单地解释新工具具有更小的代码库、重用代码、解耦组件和遵守代码约定的优点?
【问题讨论】:
标签: language-agnostic refactoring
我的任务是重构一个充满重复代码、耦合模块(即使是代码作者也害怕更改任何东西,因为他不知道它可能会影响什么)和过于复杂的数据库(250 多个查询可以用大约 20 个替换)。
项目客户只知道该工具难以维护和更改,但没有技术专长。
我如何简单地解释新工具具有更小的代码库、重用代码、解耦组件和遵守代码约定的优点?
【问题讨论】:
标签: language-agnostic refactoring
你几乎回答了自己的问题:)
重构的目的是使代码更容易更改,即更便宜。 (“维护”只是“改变”的一个子集。)
就在Fowler's definition of refactoring 中:“名词:对软件内部结构所做的更改,以便在不改变其可观察行为的情况下更易于理解且修改成本更低”。而“更容易理解”的重点是让修改成本更低。没有人付钱让程序员只是坐在那里理解事物,而对他们的理解无所事事。
糟糕的代码在很多方面都会花钱:
您甚至可以通过估算每次更改代码时重新调查代码的成本、销售或使用损失的成本、由于错误而获得的额外支持成本以及机会成本,从而为代码库的质量带来现金价值不做你会做的改变,如果这样做更容易的话。平衡重构成本。
旁注:您没有特别提到测试,所以为了完整起见,我应该提到重构意味着自动化测试,这就像重构一样是一项有其自身成本和收益的投资。如果没有测试就进行任何重大的重构,你肯定会发疯的。
【讨论】: