搏击俱乐部的第一条规则是:您不谈论搏击俱乐部。 搏击俱乐部的第二条规则是:您不谈论搏击俱乐部。
我猜对于重构也可以这么说。 首先,需要在这篇文章的上下文中定义我的意思:
重构是代码库上提高质量的任何操作。
进而需要定义什么是质量。 我与之交谈的每个人都同意这一点:这很难做到。 现在让我们为以下暂定解释做好准备:
质量是代码库的一项功能(包括但不限于体系结构,设计等),该功能的缺乏可以避免代码库中进一步有意义的更改。 在极限:
- 100%的质量意味着更改代码库以开发新功能将需要最短的时间;
- 0%的质量意味着时间是无限的。
根据此定义,重构包括:
- 改进班级设计
- 添加单元测试
- 删除无用的代码
- 遵循公认的良好做法
- 任何与提高可读性有关的内容
- 等等
现在回到这篇文章的主题。 我们是否应该问客户/经理是否需要重构? 我们是否应该在待办事项列表中放入重构冲刺? 我亲眼目睹了很多情况下被问到的情况。 不出所料,几乎在所有情况下,决定都不执行重构。 花费很多时间来实现某些功能? 无需设计更改。 测试线不够? 未添加测试。 为什么? 因为客户/经理不知道重构和质量意味着什么。
让我们用一个简单的比喻:当我开车去修理厂时,是否可以选择他是否要检查修理是否正确执行? 一点也不。 当我选择专业技工时,支票是我获得的全部包裹的一部分。 如果可以选择的话,有些人可能选择不做支票-少付些钱。 到目前为止,一切都很好。 但是,如果发生麻烦,并且有可能这样做,那么机械师将陷入严重麻烦。 因为他是专业人士,所以工作做得不好。
如果开发人员交付的应用程序没有测试或代码库混乱,他们也会遇到麻烦。 而不是他们的客户或他们的经理-尤其是他们的管理者(如果您发现我的漂移,则取决于他们的经理类型)。 所以我想知道为什么开发人员必须让不了解代码的人做出如此重要的决定。
作为专业开发人员, 您和您对交付的应用程序的质量概不负责。 您的姓名在源代码和提交历史记录中,而不是您的经理的姓名。 停止寻找不重构的借口:不要问,去做。 重构是软件开发包周期的一部分。
翻译自: https://blog.frankel.ch/dont-talk-about-refactoring-club/