重構與模式

出版時間:2013-1  出版社:人民郵電出版社  作者:Joshua Kerievsky  頁數(shù):295  字數(shù):444000  
Tag標簽:無  

內(nèi)容概要

  《重構與模式(修訂版)》開創(chuàng)性地深入揭示了重構與模式這兩種軟件開發(fā)關鍵技術之間的聯(lián)系,說明了通過重構實現(xiàn)模式改善既有的設計,往往優(yōu)于在新的設計早期使用模式?!吨貥嬇c模式(修訂版)》不僅展示了一種應用模式和重構的創(chuàng)新方法,而且有助于讀者透過實戰(zhàn)深入理解重構和模式。書中講述了27種重構方式?! ?br />  《重構與模式(修訂版)》適于面向?qū)ο筌浖_發(fā)人員閱讀,也可作為高等學校計算機專業(yè)、軟件工程專業(yè)師生的參考讀物。

作者簡介

  Joshua Kerievsky
最具人氣的年輕一代軟件開發(fā)專家之一,極限編程先驅(qū)、敏捷項目管理的思想領袖、敏捷eLearning的改革者。軟件開發(fā)公司Industrial
Logic的創(chuàng)始人。他曾為許多專業(yè)雜志撰稿,并多次在世界級技術會議上擔任講師,并撰寫了大量的論文。除本書外,他還參與撰寫了Extreme
Programming Explored和Extreme Programming Perspectives兩本書。

書籍目錄

第1章 本書的寫作緣由
1.1 過度設計
1.2 模式萬靈丹
1.3 設計不足
1.4 測試驅(qū)動開發(fā)和持續(xù)重構
1.5 重構與模式
1.6 演進式設計
第2章 重構
2.1 何謂重構
2.2 重構的動機
2.3 眾目睽睽
2.4 可讀性好的代碼
2.5 保持清晰
2.6 循序漸進
2.7 設計欠賬
2.8 演變出新的架構
2.9 復合重構與測試驅(qū)動的重構
2.10 復合重構的優(yōu)點
2.11 重構工具
第3章 模式
3.1 何謂模式
3.2 模式癡迷
3.3 實現(xiàn)模式的方式不止一種
3.4 通過重構實現(xiàn)、趨向和去除模式
3.5 模式是否會使代碼更加復雜
3.6 模式知識
3.7 使用模式的預先設計
第4章 代碼壞味
4.1 重復代碼(Duplicated Code)
4.2 過長函數(shù)(Long Method)
4.3 條件邏輯太復雜(Conditional Complexity)
4.4 基本類型偏執(zhí)(Primitive Obsession)
4.5 不恰當?shù)谋┞叮↖ndecent Exposure)
4.6 解決方案蔓延(Solution Sprawl)
4.7 異曲同工的類(Alternative Classes with Different
Interfaces)
4.8 冗贅類(Lazy Class)
4.9 過大的類(Large Class)
4.10 分支語句(Switch Statement)
4.11 組合爆炸(Combinatorial Explosion)
4.12 怪異解決方案(Oddball Solution)
第5章 模式導向的重構目錄
5.1 重構的格式
5.2 本目錄中引用的項目
5.3 起點
5.4 學習順序
第6章 創(chuàng)建
6.1 用Creation Method替換構造函數(shù)
6.2 將創(chuàng)建知識搬移到Factory
6.3 用Factory封裝類
6.4 用Factory Method引入多態(tài)創(chuàng)建
6.5 用Builder封裝Composite
6.6 內(nèi)聯(lián)Singleton
第7章 簡化
7.1 組合方法
7.2 用Strategy替換條件邏輯
7.3 將裝飾功能搬移到Decorator
7.4 用State替換狀態(tài)改變條件語句
7.5 用Composite替換隱含樹
7.6 用Command替換條件調(diào)度程序
第8章 泛化
8.1 形成Template Method
8.2 提取Composite
8.3 用Composite替換一/多之分
8.4 用Observer替換硬編碼的通知
8.5 通過Adapter統(tǒng)一接口
8.6 提取Adapter
8.7 用Interpreter替換隱式語言
第9章 保護
9.1 用類替換類型代碼
9.2 用Singleton限制實例化
9.3 引入Null Object
第10章 聚集操作
10.1 將聚集操作搬移到Collecting Parameter
10.2 將聚集操作搬移到Visitor
第11章 實用重構
11.1 鏈構造函數(shù)
11.2 統(tǒng)一接口
11.3 提取參數(shù)

參考文獻
索引

章節(jié)摘錄

版權頁:   插圖:   函數(shù)上移[F]重構需要將方法從子類搬移到超類,提煉類[F]重構需要將代碼搬移到新類中,而搬移函數(shù)[F]重構需要將函數(shù)從一個類搬移到另一個類。 本書中講述的幾乎所有重構都是復合重構。我們從一段待修改的代碼著手,然后漸進地應用各種低層次重構,直至完成所需的修改。在應用各個低層次重構之間,需要運行測試確保修改后的代碼仍能如愿運行。因此,測試也是復合重構不可分割的一部分。如果不運行測試,你很難充滿自信地應用低層次重構。 測試在重構中還扮演著一個完全不同的角色:它可以用來重新編寫、代替老代碼。測試驅(qū)動的重構(test—driven refactoring)包括應用測試驅(qū)動開發(fā)得到替換代碼,然后將老代碼替換為新代碼(同時保留并重新運行老代碼的測試)。 與測試驅(qū)動的重構相比,復合重構的使用率要高得多,因為大量重構工作只是改變原有代碼的位置。當這樣無法改善設計時,采用測試驅(qū)動的重構能夠幫助我們安全而且有效地得到更佳的設計。 替換算法[F]重構是最適合使用測試驅(qū)動重構方式來實現(xiàn)重構的絕佳例子。它實際上是徹底地將原有算法替換為另一個更簡單、更清晰的算法。你應該怎樣得到新算法呢?通過將老算法轉(zhuǎn)換為新算法是不行的,因為新算法的邏輯與之完全不同??梢韵染帉懞眯滤惴?,用它替換老算法,然后看測試能否通過。如果測試無法通過,你很可能要花上很長時間進行調(diào)試。編寫算法的更好方式是使用測試驅(qū)動開發(fā)。這種方式能夠產(chǎn)生簡單的代碼,而且還能產(chǎn)生測試,從而使你或者其他人能夠在此后充滿自信地應用各種低層次重構或者復合重構。 用Builder封裝Composite(6.5節(jié))重構是測試驅(qū)動的重構的另一個例子。這種重構的目的是通過簡化構建過程使客戶代碼能夠更容易地構建Composite。設計中使用Builder提供構建Composite的簡化方式。如果設計與原有設計差距很大,就可能無法使用多個低層次重構或者復合重構得到新的設計。同樣,使用測試驅(qū)動開發(fā)能夠更加有效地重新實現(xiàn)、替換老代碼。 用Composite替換隱含樹(7.5節(jié))重構既是一個復合重構又是一個測試驅(qū)動重構。選擇如何實現(xiàn)這個重構,取決于所遇到的代碼的性質(zhì)。一般說來,如果該代碼很難實現(xiàn)提煉類[F]重構,那么測試驅(qū)動重構方式可能更容易。用Composite替換隱含樹重構中有一個使用測試驅(qū)動重構的例子。 將裝飾功能搬移Decorator(7.3節(jié))重構不是測試驅(qū)動的重構;但是,這個重構的示例卻說明了如何用測試驅(qū)動的重構將框架外的行為搬移到框架內(nèi)。這個示例所涉及的是搬移代碼,因此似乎用復合重構實現(xiàn)應該更方便。但事實上,修改要涉及更新許多類,最終還是用測試驅(qū)動開發(fā)進行設計轉(zhuǎn)換更容易。 在實際重構中,可能大多數(shù)時間都在使用低層次重構和復合重構。只需要記住,通過測試驅(qū)動的重構完成的“重新實現(xiàn)和替換”技術,也是重構的一種有用方式即可。在設計一種新的算法或者機制時這種方式最有效,而且這種方式比應用低層次重構或者復合重構更容易。

媒體關注與評論

“重構必須付諸實踐,才能體現(xiàn)出其真正價值,而非僅僅作為一種抽象的智力練習。模式則記錄了具有公認良好屬性的程序結構。本書將兩者完美地結合起來。如果想真正實踐重構,我推薦你閱讀本書并活學活用。”——Kent Beck,軟件開發(fā)方法學的泰斗,極限編程創(chuàng)始人,模式先驅(qū)“在《設計模式》一書中,我們曾經(jīng)提到,設計模式是重構的目標。本書終于證實我們所言不虛。除此之外,本書還能夠加深讀者對設計模式和重構兩方面的領悟?!薄狤rich Gamma,IBM公司Eclipse Java開發(fā)工具負責人,《設計模式》四作者之一,模式先驅(qū)“現(xiàn)在,軟件模式和敏捷開發(fā)之間的聯(lián)系終于被人道破?!薄猈ard Cunningham,極限編程創(chuàng)始人,模式先驅(qū),Wiki發(fā)明者“本書展示了一種應用模式的創(chuàng)新方法,將自上而下地使用設計模式與自下而上地揭示迭代式開發(fā)和持續(xù)重構結合起來。任何職業(yè)軟件開發(fā)人員都應該使用這種方法,去尋找使用模式改進代碼的新的可能?!薄狟obby Woolf,IBM公司W(wǎng)ebSphere軟件服務部門IT咨詢專家,Enterprise Integration Patterns和The Design Patterns Smalltalk Companion作者之一“Joshua Kerievsky通過一系列獨樹一幟的設計級重構,將重構提升到全新的層次。本書向開發(fā)人員展示了如何對設計進行改進,從而簡化日常工作。本書是重構實踐的珍貴參考書?!薄猄ven Gorts,重構與敏捷開發(fā)布道者,比利時refactoring.be網(wǎng)站創(chuàng)始人“本書是對《設計模式》一書的重構,可能意義還不僅限于此。在此之前,設計模式這一主題一直是作為靜態(tài)和僵化的過程來闡述的,本書則將其看做是動態(tài)和靈活的,使模式的學習變成了一種試驗、出錯然后改正的人性化過程,從中讀者能夠理解到,優(yōu)秀的設計并非一蹴而就——它們都經(jīng)歷了艱難和反思。Kerievsky還重構了闡述方式本身,使其更加清晰,更容易接受。實際上,他解決了我在寫作Thinking in Patterns一書中遇到的許多組織問題。本書透徹地介紹并結合了測試、重構和設計模式諸多方面,字里行間洋溢著敘述的輕松、良好的技術感覺和難得的真知灼見?!薄狟ruce Eckel,Mindview公司總裁,《Java編程思想》和《C++編程思想》的作者“我第一次見到Joshua,就對他在理解、應用和教授設計模式上表現(xiàn)出來的熱情留下了深刻印象。偉大的教師對自己教授的內(nèi)容和如何與人分享都有這樣的熱情。我想Joshua不愧是一位偉大的教師,一位偉大的開發(fā)者,我們都從他的深刻洞察中獲益良多。”——Craig Larman,Valtech首席科學家,《UML和模式應用》和《敏捷迭代開發(fā)》作者

編輯推薦

講述重構與設計模式兩大熱門技術,將兩者有機結合,極具實戰(zhàn)價值,業(yè)界專家學習和教授重構與模式親身經(jīng)歷的結晶,《設計模式》作者Erich Gamma、Ralph Johnson和《重構》作者Martin Fowler聯(lián)合推薦。

名人推薦

重構必須付諸實踐,才能體現(xiàn)出其真正價值,而非僅僅作為一種抽象的智力練習。模式則記錄了具有公認的良好屬性的程序結構。本書將兩者完美地結合起來。如果想真正實踐重構,我推薦你閱讀本書并活學活用。 ——Kent Beck,軟件開發(fā)方法學的泰斗,極限編程創(chuàng)始人,模式先驅(qū) 在《設計模式》一書中,我們曾經(jīng)提到,設計模式是重構的目標。本書終于證實我們所言不虛。除此之外,本書還能夠加深讀者對設計模式和重構兩方面的領悟。 ——Erich Gamma,《設計模式》作者之一,模式先驅(qū) 現(xiàn)在,軟件模式和敏捷開發(fā)之間的聯(lián)系終于被人道破。 ——Ward Cunningham,極限編程創(chuàng)始人,模式先驅(qū),Wiki發(fā)明者 Joshua Kerievsky通過一系列獨樹一幟的設計級重構,將重構提升到全新的層次。本書向開發(fā)人員展示了如何對設計進行改進,從而簡化日常工作。本書是重構實踐的珍貴參考書。 ——Sven Gorts,重構與敏捷開發(fā)布道者,比利時refactoring.be網(wǎng)站創(chuàng)始人 我第一次見到Joshua就對他在理解、應用和教授設計模式上表現(xiàn)出來的熱情留下了深刻印象。偉大的教師對自己教授的內(nèi)容和如何與人分享都有這樣的熱情。我想Joshua不愧是一位偉大的教師,一位偉大的開發(fā)者,我們都從他的深刻洞察中獲益良多。 ——Craig Larman,Valtech首席科學家,《UML和模式應用》和《敏捷迭代開發(fā)》作者 掌握一門手藝不僅僅要獲得正確的工具,還需要學會高效地使用工具。本書闡釋了如何將工業(yè)級的設計工具與藝術家的技巧熔于一爐。 ——Russ Rufer,硅谷模式討論組創(chuàng)始人 本書是對《設計模式》一書的重構,可能意義還不僅限于此。在此之前,設計模式這一主題一直是作為靜態(tài)和僵化的過程來闡述的,本書則將其看做是動態(tài)和靈活的,使模式的學習變成了一種試驗、出錯然后改正的人性化過程,從中讀者能夠理解到,優(yōu)秀的設計并非一蹴而就——它們都經(jīng)歷了艱難和反恩。Kerievsky還重構了闡述方式本身。使其更加清晰,更容易接受。實際上,他解決了我在寫作Thinking in Patterns一書中遇到的許多組織問題。本書透徹地介紹并結合了測試、重構和設計模式諸多方面,字里行間洋溢著敘述的輕松、良好的技術感覺和難得的真知灼見。 ——Bruce Eckel,Mindview公司總裁,《Java編程思想》和《C++編程思想》作者

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    重構與模式 PDF格式下載


用戶評論 (總計21條)

 
 

  •   正在閱讀中,設計模式:可復用對象基礎 重構與模式 重構:改善既有代碼設計都很推薦
  •   設計模式和重構都看過了,收益頗多,再看看這本,也是很多培訓老師推薦的
  •   把重構和設計模式完美結合
  •   提升代碼設計的可重構性和可擴展性。
  •   這本書比設計模式經(jīng)典更詳細,可以作為模式的入門級書。
  •   才看完前40頁,年紀大了,看書時間少,正在努力中....
  •   剛看了幾章,很有啟發(fā)。有一些經(jīng)驗的人看,體會更深
  •   印刷不錯 但是送來的時候封面臟死了 打包要注意?。。?!
  •   不錯 書很不錯
  •   就猜會重印了!就等著呢!
  •   對重構與模式間的關系講解很到位!就是書本裝訂感覺有點不太好,封面太硬、頁與頁之間太緊湊了。看著看著啪一下自動合上了......
  •   翻了下書的內(nèi)容還不錯,值得學習和探究的東西很多,就是紙張不是特別好
  •   書到了沒細看,感覺還可以,就是例子是JAVA的,本人不搞JAVA。
  •   書有磨損,臟
  •   內(nèi)容蠻好的,只不過需要一定的Java基礎,想學C++的重構還是不要買這個
  •   很好很耐看,經(jīng)典教程
  •   對我的項目非常有幫助,實際應用指導性強
  •   很有必要看的一本書,值得一看
  •   書內(nèi)容很好。但是送來的書是壞的,從中間裂開,最后換了一本,服務態(tài)度還挺好
  •   老版本的重構與模式已經(jīng)買不到了,只能買這個版本,非常經(jīng)典
  •   重構與模式(修訂版)
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7