注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件工程及軟件方法學名家經典系列·修改代碼的藝術

名家經典系列·修改代碼的藝術

名家經典系列·修改代碼的藝術

定 價:¥79.00

作 者: (美)Michael C. Feathers 著,侯伯薇 譯
出版社: 機械工業(yè)出版社
叢編項:
標 簽: 計算機與互聯網 軟件工程及軟件方法學

購買這本書可以去


ISBN: 9787111466253 出版時間: 2014-06-01 包裝: 平裝
開本: 16開 頁數: 328 字數:  

內容簡介

  理解修改軟件的機制:添加特性、修正缺陷、改進設計、優(yōu)化性能把遺留代碼放到測試用具之中編寫測試,防止引入新的問題包含Java、C++、C和C#的示例,其中介紹的大多數技術適用于其他任何語言或平臺,精確地確定要在哪些地方修改代碼處理非面向對象的遺留代碼處理看起來沒有任何結構的應用程序。

作者簡介

  Michael C. Feathers,世界級軟件開發(fā)大師,就職于Object Mentor公司(這是一家世界領先的提供軟件領域的指導、技能開發(fā)、知識傳播和領導力服務的公司)。他是ACM和IEEE成員,也是CppUnit(從JUnit移植到C++上的單元測試框架)和FitCpp(FIT集成測試框架在C++上的實現)的最初作者,曾3次擔任OOPSLA會議的CodeFest主席。目前他在世界范圍內提供測試驅動開發(fā)、重構、面向對象設計、Java、C#、C++以及極限編程方面的培訓和指導?!『畈?,中荷人壽保險有限公司高級系統分析師,InfoQ中文站翻譯團隊主編,擁有十多年開發(fā)經驗,目前致力于技術與業(yè)務的融合,讓開發(fā)出來的程序能夠真正提高業(yè)務人員的工作效率。熱衷于通過翻譯和演講的方式與廣大程序員分享和交流,曾翻譯過多本技術書籍和幾百篇技術短文,并在Scrumgathering、QClub、敏捷之旅等活動上做過技術演講。

圖書目錄

譯者序

前言
第一部分 修改機制
第1章 修改軟件 2
1.1 修改軟件的四大原因 2
1.1.1 增加特性和修正缺陷 2
1.1.2 改善設計 4
1.1.3 優(yōu)化 4
1.2 組合在一起 4
第2章 利用反饋 7
2.1 什么是單元測試 9
2.2 高層次測試 11
2.3 測試覆蓋 11
2.4 遺留代碼修改方法 14
2.4.1 確定變更點 14
2.4.2 找到測試點 14
2.4.3 打破依賴關系 14
2.4.4 編寫測試 15
2.4.5 做出修改并重構 15
2.5 本書其他部分 15
第3章 感知和分離 16
3.1 偽協作程序 17
3.1.1 偽對象 17
3.1.2 偽對象的兩面 20
3.1.3 偽對象總結 20
3.1.4 模擬對象 21
第4章 接縫模型 22
4.1 大片的文本 22
4.2 接縫 23
4.3 接縫類型 25
4.3.1 預處理接縫 26
4.3.2 鏈接接縫 28
4.3.3 對象接縫 31
第5章 工具 36
5.1 自動化重構工具 36
5.2 模擬對象 38
5.3 單元測試用具 38
5.3.1 JUnit 39
5.3.2 CppUnitLite 40
5.3.3 NUnit 41
5.3.4 其他xUnit框架 42
5.4 一般測試用具 42
5.4.1 集成測試框架(Framework for Integrated Test,FIT) 42
5.4.2 Fitnesse 43
第二部分 修改軟件
第6章 時間很緊張,但還需要修改 46
6.1 新生方法(Sprout Method) 48
6.2 新生類(Sprout Class) 50
6.3 包裝方法 54
6.4 包裝類 57
6.5 小結 61
第7章 永遠都無法完成的修改 62
7.1 理解 62
7.2 延遲時間 63
7.3 打破依賴關系 63
7.4 構建依賴關系 64
7.5 小結 67
第8章 如何添加新特性 68
8.1 測試驅動開發(fā) 68
8.1.1 編寫失敗的測試案例 69
8.1.2 對其進行編譯 69
8.1.3 使其通過 69
8.1.4 去除重復的內容 70
8.1.5 編寫失敗的測試案例 70
8.1.6 對其進行編譯 70
8.1.7 使其通過 71
8.1.8 去除重復的內容 71
8.1.9 編寫失敗的測試案例 71
8.1.10 對其進行編譯 71
8.1.11 使其通過 72
8.1.12 去除重復的內容 73
8.2 根據差異編程 74
8.3 小結 81
第9章 無法把類放到測試用具中 82
9.1 惱人的參數 82
9.2 具有隱藏依賴的情況 88
9.3 構造Blob的情況 90
9.4 惱人的全局依賴 92
9.5 可怕的Include依賴 99
9.6 洋蔥皮參數 102
9.7 別名參數 104
第10章 無法在測試用具中運行方法 107
10.1 隱藏方法的情況 107
10.2 “有幫助的”語言特性 110
10.3 檢測不到的副作用 112
第11章 我需要修改代碼,應該測試哪些方法 119
11.1 推斷影響 119
11.2 正向推理 124
11.3 影響傳播 128
11.4 推理影響的工具 129
11.5 從影響分析中學習 131
11.6 簡化影響草圖 132
第12章 我需要在一個地方做多處變更,需要為所有涉及的類打破依賴關系嗎 134
12.1 攔截點 135
12.1.1 簡單的情況 135
12.1.2 更高層次的攔截點 137
12.2 使用夾點來判斷設計 140
12.3 夾點陷阱 141
第13章 我需要修改代碼,但不知道要編寫哪些測試 142
13.1 鑒定測試 142
13.2 鑒定類 145
13.3 定向測試(Targeted Testing) 146
13.4 編寫鑒定測試的啟示 150
第14章 對庫的依賴讓我快要崩潰了 151
第15章 應用全是API調用 153
第16章 對代碼理解不夠,所以無法修改 160
16.1 做筆記,畫草圖 160
16.2 列表標記 161
16.2.1 分離職責 162
16.2.2 理解方法結構 162
16.2.3 提取方法 162
16.2.4 理解變更的影響 162
16.3 臨時重構 162
16.4 刪除沒有用的代碼 163
第17章 應用沒有結構 164
17.1 講述系統的故事 165
17.2 裸CRC 167
17.3 對話審查(Conversation Scrutiny) 170
第18章 測試代碼擋路了 171
18.1 類命名規(guī)范 171
18.2 測試位置 172
第19章 項目并非面向對象,如何才能夠安全地修改 174
19.1 簡單的案例 174
19.2 困難的案例 175
19.3 增加新行為 178
19.4 充分利用面向對象 180
19.5 完全面向對象 183
第20章 類太大了,我不想讓它繼續(xù)膨脹 186
20.1 查看職責 188
20.2 其他技術 199
20.3 繼續(xù)前進 199
20.3.1 策略 199
20.3.2 戰(zhàn)術 200
20.4 提取類之后 201
第21章 在各個地方修改的都是同樣的代碼 202
第22章 我需要修改一個巨獸方法,但無法為其編寫測試 218
22.1 巨獸的種類 218
22.1.1 無序方法 218
22.1.2 纏結的方法 219
22.2 使用自動重構支持來對付巨獸 221
22.3 手動重構挑戰(zhàn) 224
22.3.1 引入檢測變量 224
22.3.2 提取你所知道的內容 227
22.3.3 收集依賴 228
22.3.4 打破方法對象 229
22.4 策略 229
22.4.1 記下方法的概要 230
22.4.2 找到序列 230
22.4.3 首先提取到當前類 231
22.4.4 提取小段代碼 231
22.4.5 準備好重做提取 231
第23章 如何知道沒有造成任何破壞 232
23.1 超感編輯(Hyperaware Editing) 232
23.2 單一目標編輯 233
23.3 保留簽名 234
23.4 依賴于編譯器 236
23.5 結對編程 238
第24章 我要崩潰了,它不會再有任何改進 239
第三部分 打破依賴的技術
第25章 打破依賴的技術 242
25.1 調整參數 242
25.2 分解方法對象 245
25.3 完善定義 251
25.4 封裝全局引用 252
25.5 暴露靜態(tài)方法 257
25.6 提取并重寫調用 259
25.7 提取并重寫工廠方法 261
25.8 提取并重寫getter方法 262
25.9 提取實現器 265
25.10 提取接口 269
25.11 引入實例委托器 274
25.12 引入靜態(tài)設置器 275
25.13 鏈接替換 280
25.14 參數化構造函數 280
25.15 參數化方法 284
25.16 原始化參數(Primitivize Parameter) 285
25.17 上推特性 287
25.18 下推依賴 290
25.19 使用函數指針替換函數 293
25.20 使用getter方法替換全局引用 295
25.21 創(chuàng)建子類并重寫方法 297
25.22 替代實例變量 299
25.23 模板重定義 302
25.24 文本重定義 305
附錄 重構 307
術語表 311

本目錄推薦

掃描二維碼
Copyright ? 讀書網 ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號