refactoring
依照重构之父Martin Fowler的说法,重构是 " 以这样的方式改变一个软件系统的过程:它不改变代码的外部行为然而改进它的内部结构" 。 重构的概念实际上包含了源代码任何的校订或整理,但是Fowler巩固了在软件开发行业的许多最好的做法,把他们列入一本 "重构" 的特定目录而且在他的书中描述了实现他们的方法,重构: 改良已经存在的代码的设计。 重构适用于任何的程序语言,不过现在多数的重构工具使用Java语言开发。 重构的一个方法是先改进一个点的源代码的结构然后有系统地在程序各处所有可适用的地方扩充相同的改变。结果是使密码更有效率,可升级,可维持或可以再度使用,而不实际变更任何程序本身的功能。在他的书中,Fowler描述了一个整理代码的方法,将引进新的程序缺陷的机会减到最小。 在 2001年1月, 自动重构工具开始认真地出现, 包括 IntelliJ IDEA Java IDE (综合开发环境),Emacs编辑器的X-ref插件程序工具和Instantiations jFactor 单机用重构工具。编辑环境支持简单的 refactorings 的许多基本喜欢重新命名横过一个整个的密码基础的一个功能或变数。大多数目前有重构能力的工具最小的支持提炼函数和内联函数,但是对更复杂但是有用的重构例如提炼接口和提炼超类的支持 仍然不普遍,虽然那是可行的。 Eric Raymond,一个关于程序开发的顶尖的哲学家,主张重构的概念和“现在先让某物工作过后再完善它”的方法的理念相一致,这种方法是Unix和开放源程序师还有黑客长期熟悉的。 这个理念也包含在极限编程方法中。