Refactor
为什么要重构?我不知道教科书是或是别人都会怎么讲,但是重构对我来说,基本上就是把一个糟糕的设计重新写一遍。那么,什么是我定义的两糟糕的设计?又怎么样来重写,并且期望能够达到一个怎么样的目的才算是一个好的重构呢?
糟糕的设计:
-
因为时间紧,任务重,没有进行设计,基本上是随心所欲的写出来的代码;
-
充斥着“if…else…”,打了无数的补丁,新增功能的时候,就得多增加判断条件;
-
代码变得越来越复杂,相同的代码出现在了不同的地方,修改一处,必须时刻记着也要修改别的地方
那怎么样来重写呢?完全抛弃以前的代码么?
-
完全抛弃以前的代码:之前的代码写得实在是太糟糕,没有任何可取之处。而且没有办法使用一些重构工具一进行梳理。我自己没有遇到过这种情况。每一小段代码还不至于写得面目全非,这应该算是代价相对较重的一种重构方法,与其说是重构,不如说是重新写。
-
使用之前的代码:之前的代码,小的部分还是可以使用的,将它们独立出来,形成单独的模块,并使用一定的模块调用机制(如使用事件机制、插件系统)等,来调合各个不同的模块之间进行谐调工作。
我希望能达到一个几样的效果呢?
-
简单的说,我比较追求系统的可扩展性(scalability & extensibility)、可维护性、较高的系统性能。
-
scalability是期望在一个较大的数据集前,系统也可以有一个比较好的表现;
-
extensibility是期望系统能够容易的增减功能;
-
可维护性是期望系统在需要做出修改的时候,可以更加方便;
-
较高的系统性能,这个就不必说了,谁都希望自己的程序跑得更快。
有些时候,做重构并不是一个简单的决定,因为你要做出更多的工作,还不一定能搞出一个可用的系统来,但是,有风险的事情,做成功了会收获很大的好处,大部分时间,我还是咬咬牙会去选择重构代码。
==eof==
这篇文章也发表在AgilePHP上,快去看看,Refactor
近期评论