当您的直觉告诉您可能应该进行一些重构时,很可能是您的直觉告诉您您推迟了很长时间已经推迟了一些重要的事情。
我了解“代码嗅觉”,红色-绿色重构和其他想法,但是我常常觉得,重构的最佳时间不是第一次编写代码,而是第二次或第三次使用代码并意识到这实际上是一个问题,正在实际使用中。
重构实际上有两个层次。首先是您第一次编码时出现的明显问题。这些是很少的优化,您无需花太多时间就可以完成。诸如保持您的方法和类较小,并遵守DRY和SRP之类的事情。然后,您需要承担额外的阶段来处理设计中的主要缺陷,直到您的代码下了几英里,这才可能立即显现出来。您正在谈论的是第二层,但是为了确保以后的重构不会太昂贵,您需要已经以某种方式编写了代码,以使以后的工作变得更容易且成本更低,这意味着要尽早进行重构。
正如Jeff在回答中提到的那样,“时间就是金钱”,尤其是在工作量很高且风险更高的公司中。预先花时间确保代码处于最佳状态将在以后节省时间,这在嘲弄原本应该容易进行的重构原来是一项主要操作。
编写软件时,花在真正改进代码上的每一刻都会节省稍后的时间,而这正是您真正需要它的时候。重构越早,以后所做的更改就越清晰。这就像用今天的美元对未来的技术债务支付首付款,而未来的技术债务将在明天的美元膨胀。
在任何情况下,重构都不是您要推迟的任务,直到软件已经完成且稳定的某个神秘的未来为止,因为当风险越来越高且产品难以更改时,重构会增加您的风险。重构应该是您日常活动的一部分,这就是您提到的Red-Green-Refactor哲学的本质。