• 今日66折
  • 天天BUY
新到貨精選2本75折
重構:改善既有代碼的設計(第2版)

重構:改善既有代碼的設計(第2版)

  • 定價:1008
  • 優惠價:87877
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
 

內容簡介

《重構改善既有代碼的設計第2版全彩精裝版》是經典著作《重構》出版20年後的更新版。書中清晰揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘代碼以求改善。書中給出了60多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。本書提出的重構準則將幫助開發人員一次一小步地修改代碼,從而減少了開發過程中的風險。

《重構改善既有代碼的設計第2版全彩精裝版》適合軟體發展人員、專案管理人員等閱讀,也可作為高等院校電腦及相關專業師生的參考讀物。
 

作者介紹

馬丁·福勒(Martin Fowler) 世界軟體發展大師,ThoughtWorks 首席科學家。他是一位作家、演說者、諮詢師和泛軟體發展領域的意見領袖。他致力於改善企業級的軟體設計,對優秀的設計以及支撐優秀設計的工程實踐孜孜以求。他在重構、物件導向分析設計、模式、XP 和UML 等領域都有卓越貢獻,著有《重構》《分析模式》《領域特定語言》等經典著作。
 

目錄

第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
 

詳細資料

  • ISBN:9787115508645
  • 規格:精裝 / 421頁 / 16k / 19 x 26 x 5.89 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:大陸

最近瀏覽商品

 

相關活動

  • 自然語言、文字識別、語音轉換、分析預測、影像辨識全面揭密!《Python機器學習與深度學習特訓班》
 

購物說明

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 文藝相乘
  • 無限大的手作力
  • 新書搶先報

訂閱電子報

想獲得最新商品資訊,請訂閱免費電子報