【名家名著】19
Robert C. Martin Series
軟體工程師必讀的十大好書之一
《無瑕的程式碼》作者Bob大叔親自撰文推薦!
遺留程式碼是每個coder在職場上幾乎都會遇到的難題,
且讓本書幫助您披荊嶄棘,殺出一條軟體變更的康莊大道!讓你更能妥善處理你的遺留程式碼:使它有更多表現、更多功能、更具可依賴性以及更易於管理
你的程式碼容易修改嗎?當你修改它的時候,可以即時得到回饋嗎?你了解它的運作嗎?如果有任何一個答案為否定,那麼你面對的就是遺留程式碼,而且它會拖垮你的開發成效,使你浪費更多寶貴的時間與金錢。
在本書中,MICHAEL C. FEATHERS提供了許多整套的策略,使讀者能夠更有效率地使用遺留程式碼,以及未經測試的遺留code base。這本書取材於作者為他知名的Object Mentor研討會所撰寫的內容。作者在指導時所提到的技巧,已經幫助數以百計的開發者、技術管理者以及測試人員,使他們的遺留系統維持在掌控之中。
本書內容包括:☛了解軟體修改的機制:增加特性、修正bug、改善設計、調整性能。
☛使遺留程式碼進入測試控制工具(test harness)。
☛編寫測試來保護你免於引入新的問題。
☛可用於任何語言或平台的技術──以Java、C++、C與C#為範例。
☛正確分辨程式碼應該修改的地方。
☛處理非物件導向的遺留系統。
☛處理看來似乎沒有任何結構的應用程式。
這本書也包含24個解依賴技術的目錄,可協助你讓程式的要素獨立,並且使變動更加安全。
作者簡介:
MICHAEL C. FEATHERS
任職於Object Mentor,是一家提供軟體開發的相關服務且在這方面達世界頂尖的公司。服務項目諸如技術指導、技術開發、知識轉移,以及領導技巧等等。他目前在全球的測試驅動開發(TDD)、重構、物件導向設計、Java、C#、C++及極限程式設計(XP)的領域中,提供專業訓練及技術指導的服務。他還是CppUnit(C++的JUnit測試框架)及FitCpp(C++的FIT整合測試框架)的原創作者。他是ACM及IEEE的會員,也曾在三次OOPSLA會議中主持過CodeFest活動。
目錄
Part I 修改機制
Chapter 1 修改軟體
1.1 修改軟體的四個起因
1.2 危險的修改
Chapter 2 帶著回饋工作
2.1 什麼是單元測試
2.2 高層測試
2.3 測試覆蓋
2.4 遺留程式碼修改演算法
Chapter 3 感測和分離
3.1 偽裝成合作者
Chapter 4 接縫模型
4.1 一大段文字
4.2 接縫
4.3 接縫類型
Chapter 5 工具
5.1 自動化重構工具
5.2 仿物件
5.3 單元測試控制工具
5.4 一般測試控制工具
Part II 修改程式碼的技術
Chapter 6 時間緊迫,但必須修改
6.1 新生方法
6.2 新生類別
6.3 外覆方法
6.4 外覆類別
6.5 小結
Chapter 7 漫長的修改
7.1 理解程式碼
7.2 時滯
7.3 解依賴
7.4 小結
Chapter 8 添加特性
8.1 測試驅動開發
8.2 差異式程式設計
8.3 小結
Chapter 9 無法將類別放入測試控制工具之中
9.1 令人惱火的參數
9.2 隱藏依賴
9.3 構造塊
9.4 惱人的全域依賴
9.5 可怕的包含依賴
9.6 「洋蔥」參數
9.7 化名參數
Chapter 10 無法在測試控制工具中執行方法
10.1 隱藏的方法
10.2 「有益的」語言特性
10.3 無法探知的副作用
Chapter 11 修改時應當測試哪些方法
11.1 推測程式碼修改所產生的影響
11.2 前向推測
11.3 影響的傳播
11.4 進行影響推測的工具
11.5 從影響分析當中學習
11.6 簡化影響結構示意圖
Chapter 12 在同一個地方進行多處修改,是否應該將所有相關的類別都解依賴
12.1 攔截點
12.2 透過匯點來判斷設計的好壞
12.3 匯點的陷阱
Chapter 13 修改時應該怎樣寫測試
13.1 特徵測試
13.2 刻畫類別
13.3 目標測試
13.4 編寫特徵測試的啟發式方法
Chapter 14 棘手的函式庫依賴問題
Chapter 15 到處都是API 呼叫
Chapter 16 對程式碼的理解不足
16.1 註記/草圖
16.2 清單標註
16.3 草稿式重構
16.4 刪除不用的程式碼
Chapter 17 程式毫無結構可言
17.1 講解系統的故事
17.2 Naked CRC
17.3 反省你們的交流或討論
Chapter 18 測試程式碼礙手礙腳
18.1 類別命名約定
18.2 測試程式碼放在哪裡
Chapter 19 對非物件導向的專案,如何安全地對它進行修改
19.1 一個簡單的案例
19.2 一個棘手的案例
19.3 添加新行為
19.4 利用物件導向的優勢
19.5 一切都是物件導向
Chapter 20 處理大類別
20.1 職責識別
20.2 其他技術
20.3 繼續前進
20.4 類別提取之後
Chapter 21 需要修改大量相同的程式碼
21.1 開始步驟
Chapter 22 要修改一個巨型方法,卻沒辦法為它編寫測試
22.1 巨型方法的種類
22.2 利用自動重構支援來對付巨型方法
22.3 手動重構的挑戰
22.4 策略
Chapter 23 降低修改的風險
23.1 超感編輯(Hyperaware Editing)
23.2 單一目標的編輯
23.3 簽章保持
23.4 依靠編譯器
Chapter 24 當你感到絕望時
Part III 解依賴技術
Chapter 25 解依賴技術
25.1 參數適配
25.2 分解出方法物件
25.3 定義補全
25.4 封裝全域參照
25.5 暴露靜態方法
25.6 提取並覆寫呼叫
25.7 提取並覆寫工廠方法
25.8 提取並覆寫獲取方法
25.9 實作提取
25.10 介面提取
25.11 引入實例委託
25.12 引入靜態設置方法
25.13 連接替換
25.14 參數化建構子
25.15 參數化方法
25.16 樸素化參數
25.17 特性提升
25.18 依賴下推
25.19 換函數為函數指標
25.20 以獲取方法替換全域參照
25.21 子類別化並覆寫方法
25.22 替換實例變數
25.23 模板重定義
25.24 文字重定義
Appendix 重構
方法提取
術語表
Part I 修改機制
Chapter 1 修改軟體
1.1 修改軟體的四個起因
1.2 危險的修改
Chapter 2 帶著回饋工作
2.1 什麼是單元測試
2.2 高層測試
2.3 測試覆蓋
2.4 遺留程式碼修改演算法
Chapter 3 感測和分離
3.1 偽裝成合作者
Chapter 4 接縫模型
4.1 一大段文字
4.2 接縫
4.3 接縫類型
Chapter 5 工具
5.1 自動化重構工具
5.2 仿物件
5.3 單元測試控制工具
5.4 一般測試控制工具
Part II 修改程式碼的技術
Chapter 6 時間緊迫,但必須修改
6.1 新生方法
6.2 新生類別
6.3 外覆方法
6.4 外覆類別
6.5 小...
購物須知
關於二手書說明:
商品建檔資料為新書及二手書共用,因是二手商品,實際狀況可能已與建檔資料有差異,購買二手書時,請務必檢視商品書況、備註說明及書況影片,收到商品將以書況影片內呈現為準。若有差異時僅可提供退貨處理,無法換貨或再補寄。
商品版權法律說明:
TAAZE 單純提供網路二手書託售平台予消費者,並不涉入書本作者與原出版商間之任何糾紛;敬請各界鑒察。
退換貨說明:
二手書籍商品享有10天的商品猶豫期(含例假日)。若您欲辦理退貨,請於取得該商品10日內寄回。
二手影音商品(例如CD、DVD等),恕不提供10天猶豫期退貨。
二手商品無法提供換貨服務,僅能辦理退貨。如須退貨,請保持該商品及其附件的完整性(包含書籍封底之TAAZE物流條碼)。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱
退換貨原則、
二手CD、DVD退換貨說明。