重構(第2版)全彩精裝版

重構(第2版)全彩精裝版 pdf epub mobi txt 電子書 下載2025

出版者:人民郵電齣版社
作者:Martin Fowler
出品人:異步圖書
頁數:422
译者:熊節
出版時間:2019-3
價格:168
裝幀:精裝
isbn號碼:9787115508645
叢書系列:
圖書標籤:
  • 重構
  • 編程
  • 計算機
  • 軟件工程
  • 編程藝術
  • 程序員
  • 軟件
  • JavaScript
  • 重構
  • 軟件工程
  • 設計模式
  • 代碼優化
  • 麵嚮對象
  • 架構設計
  • 全彩精裝
  • 編程實踐
  • 係統設計
  • 高質量軟件
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

1. 世界級軟件開發大師的不朽經典

2. 生動闡述重構原理和具體做法

3. 普通程序員進階到編程高手必須修煉的秘笈

重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。20 多年前,正是《重構:改善既有代碼的設計》第1 版的齣版,使重構終於從編程高手們的 小圈子走齣,成為眾多普通程序員日常開發工作中不可或缺的一部分。如今,Martin Fowler 的《重構:改善既有代碼的設計》一書已經成為全球有經驗的程序員手中的利器,既可用來改善既有代碼的設計、提升軟件的可維護性,又可用於使既有代碼更易理解、煥發齣新的活力。

這本備受關注的第2 版在第1 版的基礎上做瞭全麵修訂,反映瞭編程領域業已發生的許多變化。第2 版中介紹的重構列錶更加內聚,並用JavaScript 語言重寫瞭代碼範例。此外,第2 版中還新增瞭與函數式編程相關的重構範例,旨在教會讀者如何在沒有類的環境下開展重構。

新版沿襲瞭第1 版的結構,依次解釋什麼是重構,為什麼要重構,如何通過“壞味道”識彆齣需要重構的代碼,以及如何在實踐中成功實施重構(無論用的是什麼編程語言)。

本書將幫助讀者:

● 理解重構的過程和重構的基本原則;

● 快速有效地應用各種重構手法,提升程序的錶達力和可維護性;

● 識彆代碼中能指示齣需要重構的地方的“壞味道”;

● 深入瞭解各種重構手法,每個手法都包含解釋、動機、做法和範例4 個部分;

● 構建穩固的測試,以支持重構工作的開展;

● 理解重構過程的權衡取捨以及重構存在的挑戰等。

本書凝聚瞭軟件開發社區專傢多年摸索而獲得的寶貴經驗,書中所蘊涵的思想和精華,值得反復咀嚼,而且往往能夠常讀常新。

著者簡介

作者簡介

馬丁·福勒(Martin Fowler)

世界軟件開發大師,ThoughtWorks的首席科學傢。他是一位作傢、演說者、谘詢師和泛軟件開發領域的意見領袖。他緻力於改善企業級的軟件設計,對優秀的設計以及支撐優秀設計的工程實踐孜孜以求。他在重構、麵嚮對象分析設計、模式、XP和UML等領域都有卓越貢獻。著有《重構》《分析模式》《領域特定語言》等經典著作。

譯者簡介

熊節

在IT行業已經打拼瞭18年,在金融、零售、政府、電信、製造業等行業的信息化建設方麵有著豐富經驗,是中國IT業敏捷浪潮的領軍人物。熊節擁有利物浦大學MBA學位。

林從羽

ThoughtWorks軟件開發工程師,曾服務於國內外多傢大型企業,緻力於為團隊更快更好地交付可 工作的軟件。擁抱敏捷精神,TDD愛好者,純鍵盤工作者。

圖書目錄

第1章 重構,第一個示例 1
1.1 起點 1
1.2 對此起始程序的評價 3
1.3 重構的第一步 5
1.4 分解statement函數 6
1.5 進展:大量嵌套函數 22
1.6 拆分計算階段與格式化階段 24
1.7 進展:分離到兩個文件(和兩個階段) 31
1.8 按類型重組計算過程 34
1.9 進展:使用多態計算器來提供數據 41
1.10 結語 43
第2章 重構的原則 45
2.1 何謂重構 45
2.2 兩頂帽子 46
2.3 為何重構 47
2.4 何時重構 50
2.5 重構的挑戰 55
2.6 重構、架構和YAGNI 62
2.7 重構與軟件開發過程 63
2.8 重構與性能 64
2.9 重構起源何處 67
2.10 自動化重構 68
2.11 延展閱讀 70
第3章 代碼的壞味道 71
3.1 神秘命名(Mysterious Name) 72
3.2 重復代碼(Duplicated Code) 72
3.3 過長函數(Long Function) 73
3.4 過長參數列錶(Long Parameter List) 74
3.5 全局數據(Global Data) 74
3.6 可變數據(Mutable Data) 75
3.7 發散式變化(Divergent Change) 76
3.8 霰彈式修改(Shotgun Surgery) 76
3.9 依戀情結(Feature Envy) 77
3.10 數據泥團(Data Clumps) 78
3.11 基本類型偏執(Primitive Obsession) 78
3.12 重復的switch(Repeated Switches) 79
3.13 循環語句(Loops) 79
3.14 冗贅的元素(Lazy Element) 80
3.15 誇誇其談通用性(Speculative Generality) 80
3.16 臨時字段(Temporary Field) 80
3.17 過長的消息鏈(Message Chains) 81
3.18 中間人(Middle Man) 81
3.19 內幕交易(Insider Trading) 82
3.20 過大的類(Large Class) 82
3.21 異麯同工的類(Alternative Classes with Different Interfaces) 83
3.22 純數據類(Data Class) 83
3.23 被拒絕的遺贈(Refused Bequest) 83
3.24 注釋(Comments) 84
第4章 構築測試體係 85
4.1 自測試代碼的價值 85
4.2 待測的示例代碼 87
4.3 第一個測試 90
4.4 再添加一個測試 93
4.5 修改測試夾具 95
4.6 探測邊界條件 96
4.7 測試遠不止如此 99
第5章 介紹重構名錄 101
5.1 重構的記錄格式 101
5.2 挑選重構的依據 102
第6章 第一組重構 105
6.1 提煉函數(Extract Function) 106
6.2 內聯函數(Inline Function) 115
6.3 提煉變量(Extract Variable) 119
6.4 內聯變量(Inline Variable) 123
6.5 改變函數聲明(Change Function Declaration) 124
6.6 封裝變量(Encapsulate Variable) 132
6.7 變量改名(Rename Variable) 137
6.8 引入參數對象(Introduce Parameter Object) 140
6.9 函數組閤成類(Combine Functions into Class) 144
6.10 函數組閤成變換(Combine Functions into Transform) 149
6.11 拆分階段(Split Phase) 154
第7章 封裝 161
7.1 封裝記錄(Encapsulate Record) 162
7.2 封裝集閤(Encapsulate Collection) 170
7.3 以對象取代基本類型(Replace Primitive with Object) 174
7.4 以查詢取代臨時變量(Replace Temp with Query) 178
7.5 提煉類(Extract Class) 182
7.6 內聯類(Inline Class) 186
7.7 隱藏委托關係(Hide Delegate) 189
7.8 移除中間人(Remove Middle Man) 192
7.9 替換算法(Substitute Algorithm) 195
第8章 搬移特性 197
8.1 搬移函數 198
8.2 搬移字段(Move Field) 207
8.3 搬移語句到函數(Move Statements into Function) 213
8.4 搬移語句到調用者(Move Statements to Callers) 217
8.5 以函數調用取代內聯代碼(Replace Inline Code with Function Call) 222
8.6 移動語句(Slide Statements) 223
8.7 拆分循環(Split Loop) 227
8.8 以管道取代循環(Replace Loop with Pipeline) 231
8.9 移除死代碼(Remove Dead Code) 237
第9章 重新組織數據 239
9.1 拆分變量(Split Variable) 240
9.2 字段改名(Rename Field) 244
9.3 以查詢取代派生變量(Replace Derived Variable with Query) 248
9.4 將引用對象改為值對象(Change Reference to Value) 252
9.5 將值對象改為引用對象(Change Value to Reference) 256
第10章 簡化條件邏輯 259
10.1 分解條件錶達式(Decompose Conditional) 260
10.2 閤並條件錶達式(Consolidate Conditional Expression) 263
10.3 以衛語句取代嵌套條件錶達式(Replace Nested Conditional with Guard Clauses) 266
10.4 以多態取代條件錶達式(Replace Conditional with Polymorphism) 272
10.5 引入特例(Introduce Special Case) 289
10.6 引入斷言(Introduce Assertion) 302
第11章 重構API 305
11.1 將查詢函數和修改函數分離(Separate Query from Modifier) 306
11.2 函數參數化(Parameterize Function) 310
11.3 移除標記參數(Remove Flag Argument) 314
11.4 保持對象完整(Preserve Whole Object) 319
11.5 以查詢取代參數(Replace Parameter with Query) 324
11.6 以參數取代查詢(Replace Query with Parameter) 327
11.7 移除設值函數(Remove Setting Method) 331
11.8 以工廠函數取代構造函數(Replace Constructor with Factory Function) 334
11.9 以命令取代函數(Replace Function with Command) 337
11.10 以函數取代命令(Replace Command with Function) 344
第12章 處理繼承關係 349
12.1 函數上移(Pull Up Method) 350
12.2 字段上移(Pull Up Field) 353
12.3 構造函數本體上移(Pull Up Constructor Body) 355
12.4 函數下移(Push Down Method) 359
12.5 字段下移(Push Down Field) 361
12.6 以子類取代類型碼(Replace Type Code with Subclasses) 362
12.7 移除子類(Remove Subclass) 369
12.8 提煉超類(Extract Superclass) 375
12.9 摺疊繼承體係(Collapse Hierarchy) 380
12.10 以委托取代子類(Replace Subclass with Delegate) 381
12.11 以委托取代超類(Replace Superclass with Delegate) 399
參考文獻 405
索引 409
· · · · · · (收起)

讀後感

評分

第一次看有网友极力推荐这本书,就买了一本英文的来看,一下子就被吸引住了。 原来觉得编码可以天马行空,总想看看那些高手是怎么写代码的,现在觉得自己好像也是高手了,至少可以看得出哪些代码好,哪些代码差。真是感谢Martin Flower。 现在自己做项目经理了,对于新来的有一...

評分

整体通俗易懂, 翻译过程有些小错, 不知道有没有勘误表 (1)184页下面范例跳了好几步 (2)187页范例, 数组说三个元素,代码只列出两个, "失败场次"没有了, (3)282页, 的代码sentAlert()函数好像有问题, 变成递归了. (4)306页, Raname Method明显是印刷错误了.  

評分

书中说过重构的思想由来已久,只不过没人写成书籍罢了。 个人感觉如果你看完这本书只看到了思想,那你就错过了很多有价值的东西。小步骤的重构,如何最大限度的不引入bug才是书中要告诉大家的。像了解重构思想,只看前几章就够了。我个人认为书中最有价值的东西恰恰是进行重构...  

評分

这本书一开始读的是英文,不过Martin Fowler本身好像就不是一个Native的英语国家的人。所以他的英文写的也是比较容易懂的。 这个书第一章是一个完整的重构的例子,虽然现实中不可能如此完美而孜孜不倦的重构,不过作为一个例子,是非常的好的,让你能为重构的力量所震...  

評分

用戶評價

评分

經典計算機圖書20年後的新版,從第1版的Java語言改為第2版的JavaScript,門檻應該算是降低瞭的。翻譯質量很值得肯定。對閱讀體驗要求高的,可以選這個全彩精裝版,代碼著色還是看起來比較舒適的。

评分

是也乎,( ̄▽ ̄) 前後兩個版本都看過... 還找來瞭原版的對比看,,,, 金句很多, 但是, 核心就一句話: 如果你有空的話... 所以, 基本上, 除非團隊願意為技術債務專門給預算來摺騰, 否則...寜可在第一次編寫時, 就隱式的完成一係列重構吧...

评分

是也乎,( ̄▽ ̄) 前後兩個版本都看過... 還找來瞭原版的對比看,,,, 金句很多, 但是, 核心就一句話: 如果你有空的話... 所以, 基本上, 除非團隊願意為技術債務專門給預算來摺騰, 否則...寜可在第一次編寫時, 就隱式的完成一係列重構吧...

评分

海量item的問題在於容易讀不進去,有點實操手冊的意思。即使是這樣,這本書仍是重構這個主題下的最佳

评分

做瞭簡單的腦圖,感興趣移步這裏觀看 https://s33h0w.me/2019/11/12/重構第二版思維導圖/

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有