从Martin Fowler最早提出重构的概念开始,到现在已经有很长时间了,重构已经是深入忍心了。与其说它是一种方法,不如说是一种思想、一种习惯。我自己在工作的过程中也一直在使用它来改进自己的程序,所以在此想说说自己的两点认识。
重构不“挑食”
上面已经提到,重构不仅仅是固定的那些方法,而更是一种思想和编码时候的习惯,所以,不管你是用那种语言编程,都可以应用重构。《重构》那本书上的例子都是Java的,可能很多人会觉得,只有在Java、C#等面向对象的语言中,才能够使用重构的方法,而在面向过程和函数式的语言中,就很难应用重构了。我认为并非如此,的确,在面向对象的语言中,有很多特定的重构方法,比方说抽取接口、变量上移、变量下移等等,但还是有一些通用的重构方法,可以在各种语言中使用。
举两个最常见的例子:重命名和抽取方法。这两个方法不论在什么语言的编程下面都是非常常用的,我们也经常会做这样的重构。比方说我在使用pl/sql编写procedure和function的时候,就经常会做这样的操作。特别是当pl/sql developer的新版本中增加了重构的选项,能够帮我们更好地自动完成重构的操作。在这里,pl/sql这门语言可是过程化的,而非面向对象的。
所以说,我们可以在编写任何代码的过程中都可以使用重构,甚至在HTML代码中、JavaScript代码中等等,都可以使用,因为重构不仅仅是具体的方法,而是一种改善代码,改善