本書運用大量源於實踐的示例,從編碼、設計、組織、架構、測試、評估、應對需求變更等方面,深入而多角度地講述了我們應該如何重構,建設性地提出了高效可行的重構七步。
讀完本書,實踐重構不再卡殼,需求變更不再糾結。全面領悟重構之美,遺留系統不再是夢魘,自動化測試原來可以這樣做。
本書幫助程序員告別劣質代碼步入精妙設計,讓遺留系統的維護者逐步改善原有設計,指導重構實踐者走出困惑步步堅定。同時,也為管理者加強軟件質量的管理與監督,提供了好的方法與思路。
范鋼,1999年畢業於重慶大學,後攻讀哈爾濱工業大學軟件工程碩士。參與過國內數十個大型軟件研發項目,現任航天信息股份有限公司系統架構師,先後擔任過軟件工程師、需求分析員、主管設計師、項目經理、系統架構師等各項職務。長期關注軟件設計與質量的基礎理論研究。2007年開始寫作,先後發表了《一個優秀軟件開發人員的必修課》、《談談軟件開發那些事兒》、《一堂如何提高代碼質量的培訓課》、《一次迭代式開發的研究》等系列文章。《大話重構》是我的第一部著作。
目錄
第一部分 基礎篇
第1章 重構:改變既有代碼的一劑良藥
1.1 什麽是系統重構
1.2 在保險索上走鋼絲
1.3 大布局與小步快跑
1.4 軟件修改的四種動機
1.5 一個真實的謊言
第2章 重構方法工具箱
2.1 重構是一系列的等量變換——第一次HelloWorld重構
2.2 盤點我們的重構工具箱——對HelloWorld抽取類和接口
第3章 小步快跑的開發模式
3.1 大布局你傷不起
3.2 小設計而不是大布局
3.3 小步快跑是這樣玩的——HelloWorld重構完成
第4章 保險索下的系統重構
4.1 你不能沒有保險索
4.2 自動化測試——想說愛你不容易
4.3 我們是這樣自動化測試的——JUnit下的HelloWorldTest
4.4 采用Mock技術完成測試
第二部分 實踐篇
第5章 第一步:從分解大函數開始
5.1 超級大函數——軟件退化的重災區
5.2 抽取方法的實踐
5.3 最常見的問題 5
第6章 第二步:拆分大對象
6.1 大對象的演化過程
6.2 大對象的拆分過程——抽取類與職責驅動設計
6.3 單一職責原則(SRP)與對象拆分
6.4 合久必分,分久必合——類的歸並
第7章 第三步:提高代碼復用率
7.1 順序編程的煩惱
7.2 代碼重復與DRY原則
7.3 提高代碼復用的方法
7.3.1 當重復代碼存在於同一對象中時——抽取方法
7.3.2 當重復代碼存在於不同對象中時——抽取類
7.3.3 不同對象中復用代碼的另一種方法——封裝成實體類
7.3.4 當代碼所在類具有某種並列關系時——抽取父類
7.3.5 當出現繼承泛濫時——將繼承轉換為組合
7.3.6 當重復代碼被割裂成碎片時——繼承結合模板模式
7.4 代碼重復的檢查工具
第8章 第四步:發現程序可擴展點
8.1 開放?封閉原則與可擴展點設計
8.2 過程的擴展與放置鉤子——運用模板模式增加可擴展點
8.3 面向切面的可擴展設計
8.4 其他可擴展設計
第9章 第五步:降低程序依賴度
9.1 接口、實現與工廠模式
9.1.1 徹底理解工廠模式和依賴反轉原則
9.1.2 工廠模式在重構中的實際運用
9.2 外部接口與適配器模式——與外部系統解耦
9.3 繼承的泛濫與橋接模式
9.4 方法的解耦與策略模式
9.5 過程的解耦與命令模式
9.6 透明的功能擴展與設計——組合模式與裝飾者模式
第10章 第六步:我們開始分層了
10.1 什麽才是我們需要的分層
10.2 怎樣才能擁抱需求的變化
10.3 貧血模型與充血模型
10.4 我們怎樣面對技術的變革
第11章 一次完整的重構過程
11.1 第一步:分解大函數
11.2 第二步:拆分大對象
11.3 第三步:提高復用率
11.4 第四步:發現擴展點
11.5 第五步:降低依賴度
11.6 第六步:分層
11.7 第七步:領域驅動設計
第三部分 進階篇
第12章 什麽時候重構
12.1 重構是一種習慣
12.2 重構讓程序可讀
12.3 重構,才好復用
12.4 先重構,再擴展
12.5 變更任務緊急時,又該如何重構
第13章 測試驅動開發
13.1 測試驅動開發(TDD)vs.後測試開發(TAD)
13.2 測試驅動開發與重構
13.3 遺留系統怎樣開展TDD
第14章 全面的升級任務
14.1 計划式設計vs.演進式設計
14.2 風險驅動設計
14.3 制定系統重構計划
第15章 我們怎樣擁抱變化
15.1 領域才是軟件系統的「心」——工資軟件的三次設計演變
15.2 領域模型分析方法
15.3 原文分析法
15.4 領域驅動設計——使用領域模型與客戶一起設計
15.5 在遺留系統中的應用
第16章 測試的困境
16.1 重構初期的困局
16.2 解耦與自動化測試
16.3 開發人員,還是測試人員
16.4 建立自動化測試體系
第17章 系統重構的評價
17.1 評價軟件質量的指標
17.2 怎樣評價軟件質量呢
結束語:重構改變了世界
附錄
第1章 重構:改變既有代碼的一劑良藥
1.1 什麽是系統重構
1.2 在保險索上走鋼絲
1.3 大布局與小步快跑
1.4 軟件修改的四種動機
1.5 一個真實的謊言
第2章 重構方法工具箱
2.1 重構是一系列的等量變換——第一次HelloWorld重構
2.2 盤點我們的重構工具箱——對HelloWorld抽取類和接口
第3章 小步快跑的開發模式
3.1 大布局你傷不起
3.2 小設計而不是大布局
3.3 小步快跑是這樣玩的——HelloWorld重構完成
第4章 保險索下的系統重構
4.1 你不能沒有保險索
4.2 自動化測試——想說愛你不容易
4.3 我們是這樣自動化測試的——JUnit下的HelloWorldTest
4.4 采用Mock技術完成測試
第二部分 實踐篇
第5章 第一步:從分解大函數開始
5.1 超級大函數——軟件退化的重災區
5.2 抽取方法的實踐
5.3 最常見的問題 5
第6章 第二步:拆分大對象
6.1 大對象的演化過程
6.2 大對象的拆分過程——抽取類與職責驅動設計
6.3 單一職責原則(SRP)與對象拆分
6.4 合久必分,分久必合——類的歸並
第7章 第三步:提高代碼復用率
7.1 順序編程的煩惱
7.2 代碼重復與DRY原則
7.3 提高代碼復用的方法
7.3.1 當重復代碼存在於同一對象中時——抽取方法
7.3.2 當重復代碼存在於不同對象中時——抽取類
7.3.3 不同對象中復用代碼的另一種方法——封裝成實體類
7.3.4 當代碼所在類具有某種並列關系時——抽取父類
7.3.5 當出現繼承泛濫時——將繼承轉換為組合
7.3.6 當重復代碼被割裂成碎片時——繼承結合模板模式
7.4 代碼重復的檢查工具
第8章 第四步:發現程序可擴展點
8.1 開放?封閉原則與可擴展點設計
8.2 過程的擴展與放置鉤子——運用模板模式增加可擴展點
8.3 面向切面的可擴展設計
8.4 其他可擴展設計
第9章 第五步:降低程序依賴度
9.1 接口、實現與工廠模式
9.1.1 徹底理解工廠模式和依賴反轉原則
9.1.2 工廠模式在重構中的實際運用
9.2 外部接口與適配器模式——與外部系統解耦
9.3 繼承的泛濫與橋接模式
9.4 方法的解耦與策略模式
9.5 過程的解耦與命令模式
9.6 透明的功能擴展與設計——組合模式與裝飾者模式
第10章 第六步:我們開始分層了
10.1 什麽才是我們需要的分層
10.2 怎樣才能擁抱需求的變化
10.3 貧血模型與充血模型
10.4 我們怎樣面對技術的變革
第11章 一次完整的重構過程
11.1 第一步:分解大函數
11.2 第二步:拆分大對象
11.3 第三步:提高復用率
11.4 第四步:發現擴展點
11.5 第五步:降低依賴度
11.6 第六步:分層
11.7 第七步:領域驅動設計
第三部分 進階篇
第12章 什麽時候重構
12.1 重構是一種習慣
12.2 重構讓程序可讀
12.3 重構,才好復用
12.4 先重構,再擴展
12.5 變更任務緊急時,又該如何重構
第13章 測試驅動開發
13.1 測試驅動開發(TDD)vs.後測試開發(TAD)
13.2 測試驅動開發與重構
13.3 遺留系統怎樣開展TDD
第14章 全面的升級任務
14.1 計划式設計vs.演進式設計
14.2 風險驅動設計
14.3 制定系統重構計划
第15章 我們怎樣擁抱變化
15.1 領域才是軟件系統的「心」——工資軟件的三次設計演變
15.2 領域模型分析方法
15.3 原文分析法
15.4 領域驅動設計——使用領域模型與客戶一起設計
15.5 在遺留系統中的應用
第16章 測試的困境
16.1 重構初期的困局
16.2 解耦與自動化測試
16.3 開發人員,還是測試人員
16.4 建立自動化測試體系
第17章 系統重構的評價
17.1 評價軟件質量的指標
17.2 怎樣評價軟件質量呢
結束語:重構改變了世界
附錄
網路書店
類別
折扣
價格
-
新書87折$235