开发人员经常交替使用“重构”和“重新设计”这两个词。 为什么? 我认为这是因为在两种情况下,我们都将获得相同的结果-更改了代码,但是它执行的功能与该过程开始时的功能完全相同。
但是,我认为这些词不是确切的同义词,在我们开始重构代码之前,最好先了解它们之间的区别。
动机
我们正在重构代码,以使其更易于理解,使其更具可读性。 我们这样做是为了提高阅读代码和理解代码的便利性。
另一方面,我们背后有重新设计和动机–它们与重构不同。 当我们想要更改功能,准备现有代码库进行扩展时,我们正在重新设计代码。
复杂
每次重构都是对代码库的微小更改,就像重命名方法一样。 而且每个都是原子的,不需要其他步骤即可带来价值。 当然,您可以记住更多的重构,其中包括更多的提交,但是可以在任何时候停止它,而对代码库没有任何负面影响。
而且正在兑换。 没有计划就不要碰代码。 您需要知道要去的地方,在到达终点之前不要停下来。 整个计划定稿后,便完成了整个重新设计。
范围
重构的起点是一个类,一个方法。 您可以重命名它,将代码提取到单独的类中,但是更改的范围通常不大于两个,三个文件。
重新设计主要涉及对象之间的通信,以及它们之间的交互方式。 这意味着通常重新设计会导致许多类之间的变化,以及它们之间的通信方式。
定时
每当您发现代码库中有待改进之处时,就应该每天重构代码。 当您正在尝试引入新的东西或更改现有的东西时,就会发生这种情况。 在这项工作中,您只需注意部分代码,然后决定对其进行重构。 这不是您的主要目标,而是另外做。
重新设计代码时,重新设计是您的目标。
甚至有可能在重新设计期间也会进行一些重构。
汇总表
重构 | 重新设计 |
|
|
翻译自: https://www.javacodegeeks.com/2017/11/refactoring-vs-redesign.html