什么是重构?
重构代码的一个关键主题是解决代码内部结构的问题,同时不改变被重构程序的外部行为。在某些情况下,这可能意味着引入内部结构,而这在以前并不是有意的,也没有考虑过。
重构作为一种过程,可以在代码编写完成后改进代码的设计。虽然设计是软件工程过程中的一个关键阶段,但却经常被忽视(尤其是在 PHP 中);除此之外,长期保持代码结构还需要对软件设计的持续了解。如果开发人员不了解项目的最初设计,他们可能会以非常粗略的方式对其进行开发。
在极限编程(XP)中,有一句话被称为 "无情重构"(Refactor Mercilessly),它的意思不言自明。在 XP 中,重构是作为一种机制提出的,目的是使软件设计尽可能简单,避免不必要的复杂性。正如 XP 的规则所述 确保每件事只表达一次,而且只表达一次。最终,只需花费更少的时间,就能开发出一个经过精心梳理的系统。
重构的一个关键原则是将软件设计视为有待发现的东西,而不是预先创建的东西。在开发系统时,我们可以将开发作为一种寻找良好设计方案的机制。通过重构,我们可以确保系统在开发过程中保持良好的状态,从而减少技术债务。
重构并不总是可行的,你可能偶尔会遇到无法改变的黑盒系统,事实上,你甚至可能需要封装一个系统才能重写它。不过,在很多情况下,我们可以通过重构代码来改进设计。