新聞中心
重構(gòu)(Refactoring)就是在不改變軟件現(xiàn)有功能的基礎(chǔ)上,通過調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計模式和架構(gòu)更趨合理,提高軟件的擴展性和維護性。

從Martin Fowler最早提出重構(gòu)的概念開始,到現(xiàn)在已經(jīng)有很長時間了,重構(gòu)已經(jīng)是深入忍心了。與其說它是一種方法,不如說是一種思想、一種習慣。我自己在工作的過程中也一直在使用它來改進自己的程序,所以在此想說說自己的兩點認識。
重構(gòu)不“挑食”
上面已經(jīng)提到,重構(gòu)不僅僅是固定的那些方法,而更是一種思想和編碼時候的習慣,所以,不管你是用那種語言編程,都可以應(yīng)用重構(gòu)。《重構(gòu)》那本書上的例子都是Java的,可能很多人會覺得,只有在Java、C#等面向?qū)ο蟮恼Z言中,才能夠使用重構(gòu)的方法,而在面向過程和函數(shù)式的語言中,就很難應(yīng)用重構(gòu)了。
我認為并非如此,的確,在面向?qū)ο蟮恼Z言中,有很多特定的重構(gòu)方法,比方說抽取接口、變量上移、變量下移等等,但還是有一些通用的重構(gòu)方法,可以在各種語言中使用。
舉兩個最常見的例子:重命名和抽取方法。這兩個方法不論在什么語言的編程下面都是非常常用的,我們也經(jīng)常會做這樣的重構(gòu)。比方說我在使用pl/sql編寫procedure和function的時候,就經(jīng)常會做這樣的操作。特別是當pl/sql developer的新版本中增加了重構(gòu)的選項,能夠幫我們更好地自動完成重構(gòu)的操作。在這里,pl/sql這門語言可是過程化的,而非面向?qū)ο蟮摹?/p>
所以說,我們可以在編寫任何代碼的過程中都可以使用重構(gòu),甚至在HTML代碼中、JavaScript代碼中等等,都可以使用,因為重構(gòu)不僅僅是具體的方法,而是一種改善代碼,改善系統(tǒng)的一種思想,它的目的就在于讓我們的系統(tǒng)的可讀性、可維護性更高,從而具有更好的質(zhì)量。
重構(gòu)可以隨時進行
Martin Fowler的《重構(gòu)》一書還有個副標題,叫做“改善既有代碼的設(shè)計”,這讓我在當初產(chǎn)生了一點兒誤會,還以為重構(gòu)只能是在把代碼寫完了之后才能夠進行的。其實不然,我們可以隨時對程序進行重構(gòu),(我曾經(jīng)在內(nèi)部的交流中把它叫做行進中的重構(gòu),呵呵)那樣會更有利于之后的編碼。
比方說,在編寫程序的過程中,忽然發(fā)現(xiàn)有一個變量的命名有些不合理,我們可以立即對其進行重構(gòu),修改名稱;或者更實用的,發(fā)現(xiàn)自己接下來要寫的代碼完全是之前代碼的重復,或者說可以從別處copy,然后稍作修改就可以,那么我們就可以回頭把之前的方法抽取出來,而在新的位置直接調(diào)用;或者發(fā)現(xiàn)想要使用某個方法,但它位于其它類中,就可以想是否可以提取父類或者接口,然后把通用的方法提取到其中,然后再對其進行繼承或者實現(xiàn),那樣就可以方便地調(diào)用方法了。
還有很多很多的方法,都是可以在編碼的過程之中就可以做的,而不需要等所有的編碼完成了之后才做。那樣的好處是顯而易見的,在之后如果再需要實現(xiàn)類似的功能,就可以直接調(diào)用已有的方法,而不需要等***再做調(diào)整了。
總之,越是使用,越是覺得在編程的過程中應(yīng)該始終把“重構(gòu)”的思想放在頭腦中,隨時拿出來使用。
你對于重構(gòu)是否也有想說的話呢?
原文地址:http://blog.csdn.net/lingyun2005/archive/2010/12/08/6062149.aspx
【編輯推薦】
- 在PHP語言中使用JSON
- 快速排序(Quicksort)的Javascript實現(xiàn)
- Web移動應(yīng)用 HTML5 CSS和JavaScript
- 高效PHP程序必知的53個技巧
- CSS高手也容易犯的10個錯誤提示
名稱欄目:程序員應(yīng)知 也說重構(gòu)
當前URL:http://www.dlmjj.cn/article/djshhcg.html


咨詢
建站咨詢
