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