本書分為三大部分。第1部分所關(guān)注的是出現(xiàn)在類之中的壞味道(smell,即問題)。第2部分強調(diào)出現(xiàn)在類之間的壞味道。第3部分則提供了一些大規(guī)模的程序,可以用于實踐不同領(lǐng)域的重構(gòu)。貫穿于這些部分中,不時會出現(xiàn)一些簡要說明,我稱...[繼續(xù)閱讀]
海量資源,盡在掌握
本書分為三大部分。第1部分所關(guān)注的是出現(xiàn)在類之中的壞味道(smell,即問題)。第2部分強調(diào)出現(xiàn)在類之間的壞味道。第3部分則提供了一些大規(guī)模的程序,可以用于實踐不同領(lǐng)域的重構(gòu)。貫穿于這些部分中,不時會出現(xiàn)一些簡要說明,我稱...[繼續(xù)閱讀]
在第2章中,我們將簡要地介紹重構(gòu)周期(refactoringcycle)。第3章所討論的是可加以量度的壞味道,即能夠由簡單的長度(length)來度量。在第4章中,我們將了解到名字對于代碼的簡單性和理解性有著怎樣的作用。第5章將考慮不必要代碼的有...[繼續(xù)閱讀]
類中的數(shù)據(jù)有時所表示的是“丟失”的對象,即相應(yīng)對象已經(jīng)無從引用;第8章將會考慮這個問題。第9章將討論如何對超類和子類的責任加以權(quán)衡,而第10章將進一步考慮這個問題,即研究如何讓類和其他類分擔責任以期平衡。當確定如何...[繼續(xù)閱讀]
本書最后一部分提供了一些有待重構(gòu)的程序。第13章是一個簡單的選課系統(tǒng),其中使用了一個數(shù)據(jù)庫。將代碼和數(shù)據(jù)庫一同重構(gòu)是一個正在興起的研究領(lǐng)域;在該程序的代碼中,可以看到存在大量的重復(fù)問題需要加以修正。第14章將介紹...[繼續(xù)閱讀]
要完成這些練習,有一條捷徑:即閱讀問題,再直接查看答案,因為答案看上去可行,所以點頭稱是,如此而已。但這會使你被我的想法所左右。相應(yīng)地,還有一種稍顯艱難的做法,卻是一種更好的完成練習的方式:即閱讀問題,再解決問題,在此...[繼續(xù)閱讀]
重構(gòu)是安全地改善既有代碼設(shè)計的一門藝術(shù)。對此,有如下含義:●重構(gòu)并不包括對系統(tǒng)的所有修改。如果修改是對設(shè)計的改善,或是增加新的功能,則均不能被認為是重構(gòu)。在創(chuàng)建新代碼的過程中,盡管重構(gòu)可以作為其中的一個環(huán)節(jié),但...[繼續(xù)閱讀]
壞味道(smell),特別是代碼壞味道(codesmell),是一些指出代碼中潛在問題的警示信號。并非所有壞味道所指示的都確實是問題,但是對于大多數(shù)壞味道,均很有必要加以查看,并做出相應(yīng)決定。有些人不喜歡用“壞味道”一詞,而更傾向于把...[繼續(xù)閱讀]
重構(gòu)有以下基本模式:重構(gòu)周期(RefactoringCycle)從一個正在工作的程序開始。若存在壞味道,則:●挑出最壞的味道?!襁x擇一種可以解決該壞味道的重構(gòu)?!駪?yīng)用此重構(gòu)。重構(gòu)周期的每一次循環(huán)中,我們都力圖選擇適當?shù)闹貥?gòu)以改善代碼...[繼續(xù)閱讀]
一種方法是尋求最簡單的設(shè)計。KentBeck確定了簡單設(shè)計的4條規(guī)則;如果代碼違背了這些規(guī)則(這些規(guī)則存在不同的優(yōu)先級),就需要對相應(yīng)的問題加以解決。簡單設(shè)計1.可以運行(通過)所有測試。2.不存在重復(fù)的邏輯。要特別注意諸如并行...[繼續(xù)閱讀]
強調(diào)安全轉(zhuǎn)換(safetransformation)是重構(gòu)所涉及的一個方面。我們將從頭開始完成一個簡單的重構(gòu)。在此過程中,我們將得出一些基本原則,這些原則有助于更好地理解重構(gòu)是如何工作的。請考慮封裝字段(EncapsulateField)這個重構(gòu)。其目標是...[繼續(xù)閱讀]