《重构——改善既有代码的设计》是一本与《设计模式》齐名的软件工程经典著作。本书的作者是著名的软件开发专家Martin Fowler,他在这本书中系统地介绍了超过70种行之有效的重构方法。《设计模式》的作者Erich Gamma为本书撰写了序言,为本书的权威性和实用性提供了保证。
重构指的是对软件内部结构的一种调整,目的是在不改变软件外部行为的前提下,改善其内部结构,增加可读性,降低复杂度,提高可维护性和可扩展性。重构的主要目的不是为了增加新的功能,而是为了改进软件的内部结构。通过重构,我们可以逐步消除代码中的问题,如代码重复、坏味道(比如长方法、复杂的条件判断)、以及过度的类耦合等,使得软件设计逐步趋向合理和优雅。
重构对于软件开发是一个重要的环节。在软件开发的初期,开发人员往往专注于实现功能和需求,可能没有足够的时间和精力去考虑代码的质量和设计。随着时间的推移,尤其是项目进入维护阶段后,代码的可维护性和可扩展性变得越来越重要。这时候,就需要通过重构来优化代码,从而让系统更易于理解和维护。
Martin Fowler在本书中详细讲解了重构的时机、重构的具体技术、以及如何操作。他指出,重构是一种持续的过程,需要不断地在代码中寻找可以改进的地方。重构技术包括但不限于将某些代码移入另一个类、将某些方法或者代码块提炼为单独的方法、将继承体系中的某些部分提取为新的类等等。通过这些重构技术,重构能够极大地改善软件的内部结构,让软件架构更加清晰,有利于软件的长期维护和功能扩展。
本书中所介绍的重构方法大多以Java语言的示例进行说明,但是其所讲述的概念和方法适用于任何面向对象的编程语言。重构不是一种一蹴而就的行为,而是一种持续的、逐步改进的过程。在重构过程中,开发人员需要不断评估现有代码的质量,并寻找可以改进的机会。
Fowler还强调,重构不应该影响程序的外部行为,也就是说在重构过程中,程序的输入和输出应该是不变的。这是重构与重写代码最本质的区别。重写是彻底抛弃旧代码,而重构是在原有代码的基础上,通过小步骤、有计划的更改,逐步提高代码质量。
在重构实践中,读者还可以参考其他一些重构相关的书籍和资源。比如John Brant和Don Roberts所著的《Refactoring for Smalltalk》一书,以及重构浏览器工具,这些都是学习和实践重构技术的好帮手。此外,重构技术的学习和应用也离不开实践经验的积累,通过不断地学习和实践,软件开发者可以逐渐提升重构技能,从而编写出设计良好、易于维护的高质量代码。