書籍簡介:
《敏捷軟件開發(fā):原則模式和實踐(C#版)》不僅是一部深入淺出、生動易懂的面向對象原則與設計模式著作。而且還是一部通俗的敏捷方法導引書和快速實用的LJML教程。通過《敏捷軟件開發(fā):原則模式和實踐(C#版)》你會發(fā)現(xiàn),許多以前看起來非常枯燥費解的概念,忽然間都豁然開朗。變得鮮活生動起來。
C#版與此前的Java版相比,主要的更新包括加強了UML的介紹章節(jié)。使其更加貼近實戰(zhàn);增加了對MVP模式的介紹等。
作者簡介:
Robert C.Martin(“bob大叔”)世界級的軟件開發(fā)大師,著名軟件咨詢公司object mento,公司的創(chuàng)始人和總裁。曾經擔任c++report雜志主編多年,也是設計模式和敏捷開發(fā)運動的主要倡導者之一。
出版日期:
2008-01-01
章節(jié)目錄:
第一部分 敏捷開發(fā)
第1章 敏捷實踐
1.1 敏捷聯(lián)盟
1.1.1 人和交互重于過程和工具
1.1.2 可以工作的軟件重于面面俱到的文檔
1.1.3 客戶合作重于合同談判
1.1.4 隨時應對變化重于遵循計劃
1.2 原則
1.3 結論
1.4 參考文獻
第2章 極限編程概述
2.1 極限編程實踐
2.1.1 完整團隊
2.1.2 用戶故事
2.1.3 短交付周期
2.1.4 驗收測試
2.1.5 結對編程
2.1.6 測試驅動開發(fā)
2.1.7 集體所有權
2.1.8 持續(xù)集成
2.1.9 可持續(xù)的開發(fā)速度
2.1.10 開放的工作空間
2.1.11 計劃游戲
2.1.12 簡單設計
2.1.13 重構
2.1.14 隱喻
2.2 結論
2.3 參考文獻
第3章 計劃
3.1 初始探索
3.2 發(fā)布計劃
3.3 迭代計劃
3.4 定義“完成”
3.5 任務計劃
3.6 迭代
3.7 跟蹤
3.8 結論
3.9 參考文獻
第4章 測試
4.1 測試驅動開發(fā)
4.1.1 測試優(yōu)先設計的例子
4.1.2 測試促使模塊之間隔離
4.1.3 意外獲得的解耦合
4.2 驗收測試
4.3 意外獲得的構架
4.4 結論
4.5 參考文獻
第5章 重構
5.1 素數產生程序:一個簡單的重構示例
5.1.1 單元測試
5.1.2 重構
5.1.3 最后審視
5.2 結論
5.3 參考文獻
第6章 一次編程實踐
6.1 保齡球比賽
6.2 結論
第二部分 敏捷設計
第7章 什么是敏捷設計
7.1 設計臭味
7.1.1 設計臭味——腐化軟件的氣味
7.1.2 僵化性
7.1.3 脆弱性
7.1.4 頑固性
7.1.5 粘滯性
7.1.6 不必要的復雜性
7.1.7 不必要的重復
7.1.8 晦澀性
7.2 軟件為何會腐化
7.3 Copy程序
7.3.1 熟悉的場景
7.3.2 Copy程序的敏捷設計
7.4 結論
7.5 參考文獻
第8章 SRP:單一職責原則
8.1 定義職責
8.2 分離耦合的職責
8.3 持久化
8.4 結論
8.5 參考文獻
第9章 OCP:開放-封閉原則
9.1 OCP概述
9.2 Shape應用程序
9.2.1 違反OCP
9.2.2 遵循OCP
9.2.3 預測變化和“貼切的”結構
9.2.4 放置吊鉤
9.2.5 使用抽象獲得顯式封閉
9.2.6 使用“數據驅動”的方法獲取封閉性
9.3 結論
9.4 參考文獻
第10章 LSP:Liskov替換原則
10.1 違反LSP的情形
10.1.1 簡單例子
10.1.2 更微妙的違反情形
10.1.3 實際的例子
10.2 用提取公共部分的方法代替繼承
10.3 啟發(fā)式規(guī)則和習慣用法
10.4 結論
10.5 參考文獻
第11章 DIP:依賴倒置原則
11.1 層次化
11.1.1 倒置的接口所有權
11.1.2 依賴于抽象
11.2 簡單的DIP示例
11.3 熔爐示例
11.4 結論
11.5 參考文獻
第12章 ISP:接口隔離原則
12.1 接口污染
12.2 分離客戶就是分離接口
12.3 類接口與對象接口
12.3.1 使用委托分離接口
12.3.2 使用多重繼承分離接口
12.4 ATM用戶界面的例子
12.5 結論
12.6 參考文獻
第13章 C#程序員UML概觀
13.1 類圖
13.2 對象圖
13.3 順序圖
13.4 協(xié)作圖
13.5 狀態(tài)圖
13.6 結論
13.7 參考文獻
第14章 使用UML
14.1 為什么建模
14.1.1 為什么構建軟件模型
14.1.2 編碼前應該構建面面俱到的設計嗎
14.2 有效使用UML
14.2.1 與他人交流
14.2.2 脈絡圖
14.2.3 項目結束文檔
14.2.4 要保留的和要丟棄的
14.3 迭代式改進
14.3.1 行為優(yōu)先
14.3.2 檢查結構
14.3.3 想象代碼
14.3.4 圖的演化
14.4 何時以及如何繪制圖示
14.4.1 何時要畫圖,何時不要畫圖
14.4.2 CASE 工具
14.4.3 那么,文檔呢
14.5 結論
第15章 狀態(tài)圖
15.1 基礎知識
15.1.1 特定事件
15.1.2 超狀態(tài)
15.1.3 初始偽狀態(tài)和結束偽狀態(tài)
15.2 使用FSM圖示
15.3 結論
第16章 對象圖
16.1 即時快照
16.2 主動對象
16.3 結論
第17章 用例
17.1 編寫用例
17.1.1 備選流程
17.1.2 其他東西呢
17.2 用例圖
17.3 結論
17.4 參考文獻
第18章 順序圖
18.1 基礎知識
18.1.1 對象、生命線、消息及其他
18.1.2 創(chuàng)建和析構
18.1.3 簡單循環(huán)
18.1.4 時機和場合
18.2 高級概念
18.2.1 循環(huán)和條件
18.2.2 耗費時間的消息
18.2.3 異步消息
18.2.4 多線程
18.2.5 主動對象
18.2.6 向接口發(fā)送消息
18.3 結論
第19章 類圖
19.1 基礎知識
19.1.1 類
19.1.2 關聯(lián)
19.1.3 繼承
19.2 類圖示例
19.3 細節(jié)
19.3.1 類衍型
19.3.2 抽象類
19.3.3 屬性
19.3.4 聚集
19.3.5 組合
19.3.6 多重性
19.3.7 關聯(lián)衍型
19.3.8 內嵌類
19.3.9 關聯(lián)類
19.3.10 關聯(lián)修飾符
19.4 結論
19.5 參考文獻
第20章 咖啡的啟示
20.1 Mark IV型專用咖啡機
20.1.1 規(guī)格說明書
20.1.2 常見的丑陋方案
20.1.3 虛構的抽象
20.1.4 改進方案
20.1.5 實現(xiàn)抽象模型
20.1.6 這個設計的好處
20.2 面向對象過度設計
20.3 參考文獻
第三部分 薪水支付案例研究
第21章 COMMAND模式和ACTIVE OBJECT模式:多功能與多任務
21.1 簡單的Command
21.2 事務
21.2.1 實體上解耦和時間上解耦
21.2.2 時間上解耦
21.3 Undo()方法
21.4 ACTIVE OBJECT模式
21.5 結論
21.6 參考文獻
第22章 TEMPLATE METHOD模式和STRATEGY模式:繼承和委托
22.1 TEMPLATE METHOD模式
22.1.1 濫用模式
22.1.2 冒泡排序
22.2 STRATEGY模式
22.3 結論
22.4 參考文獻
第23章 FACADE模式和MEDIATOR模式
23.1 FACADE模式
23.2 MEDIATOR模式
23.3 結論
23.4 參考文獻
第24章 SINGLETON模式和MONOSTATE模式
24.1 SINGLETON模式
24.1.1 SINGLETON模式的好處
24.1.2 SINGLETON模式的代價
24.1.3 運用SINGLETON模式
24.2 MONOSTATE模式
24.2.1 MONOSTATE模式的好處
24.2.2 MONOSTATE模式的代價
24.2.3 運用MONOSTATE模式
24.3 結論
24.4 參考文獻
第25章 NULL OBJECT模式
25.1 描述
25.2 結論
25.3 參考文獻
第26章 薪水支付案例研究:第一次迭代開始
26.1 初步的規(guī)格說明
26.2 基于用例分析
26.2.1 增加新雇員
26.2.2 刪除雇員
26.2.3 登記考勤卡
26.2.4 登記銷售憑條
26.2.5 登記工會服務費
26.2.6 更改雇員明細
26.2.7 發(fā)薪日
26.3 反思:找出底層的抽象
26.3.1 雇員支付類別抽象
26.3.2 支付時間表抽象
26.3.3 支付方式
26.3.4 從屬關系
26.4 結論
26.5 參考文獻
第27章 薪水支付案例研究:實現(xiàn)
27.1 事務
27.1.1 增加雇員
27.1.2 刪除雇員
27.1.3 考勤卡、銷售憑條以及服務費用
27.1.4 更改雇員屬性
27.1.5 犯了什么暈
27.1.6 支付雇員薪水
27.1.7 支付領月薪的雇員薪水
27.1.8 支付鐘點工薪水
27.2 主程序
27.3 數據庫
27.4 結論
27.5 關于本章
27.6 參考文獻
第四部分 打包薪水支付系統(tǒng)
第28章 包和組件的設計原則
28.1 包和組件
28.2 組件的內聚性原則:粒度
28.2.1 重用—發(fā)布等價原則
28.2.2 共同重用原則
28.2.3 共同封閉原則
28.2.4 組件內聚性總結
28.3 組件的耦合性原則:穩(wěn)定性
28.3.1 無環(huán)依賴原則
28.3.2 穩(wěn)定依賴原則
28.3.3 穩(wěn)定抽象原則
28.4 結論
第29章 FACTORY模式
29.1 依賴問題
29.2 靜態(tài)類型與動態(tài)類型
29.3 可替換的工廠
29.4 對測試支架使用對象工廠
29.5 工廠的重要性
29.6 結論
29.7 參考文獻
第30章 薪水支付案例研究:包分析
30.1 組件結構和符號
30.2 應用CCP
30.3 應用REP
30.4 耦合和封裝
30.5 度量
30.6 度量薪水支付應用程序
30.6.1 對象工廠
30.6.2 重新思考內聚的邊界
30.7 最終的包結構
30.8 結論
30.9 參考文獻
第31章 COMPOSITE模式
31.1 組合命令
31.2 多重性還是非多重性
31.3 結論
第32章 OBSERVER——演化至模式
32.1 數字時鐘
32.2 OBSERVER模式
32.2.1 模型
32.2.2 面向對象設計原則的運用
32.3 結論
32.4 參考文獻
第33章 ABSTRACT SERVER模式、 ADAPTER模式和BRIDGE模式
33.1 ABSTRACT SERVER模式
33.2 ADAPTER模式
33.2.1 類形式的ADAPTER模式
33.2.2 調制解調器問題、適配器以及LSP
33.3 BRIDGE模式
33.4 結論
33.5 參考文獻
第34章 PROXY模式和GATEWAY模式:管理第三方API
34.1 PROXY模式
34.1.1 實現(xiàn)PROXY模式
34.1.2 小結
34.2 數據庫、中間件以及其他第三方接口
34.3 TABLE DATA GATEWAY
34.3.1 測試和內存TDG
34.3.2 測試DbGateWay
34.4 可以用于數據庫的其他模式
34.5 結論
34.6 參考文獻
第35章 VISITOR模式
35.1 VISITOR模式
35.2 ACYCLIC VISITOR模式
35.3 DECORATOR模式
35.4 EXTENSION OBJECT模式
35.5 結論
35.6 參考文獻
第36章 STATE模式
36.1 嵌套switch/case語句
36.1.1 內部作用域的狀態(tài)變量
36.1.2 測試動作
36.1.3 代價和收益
36.2 遷移表
36.2.1 使用表解釋
36.2.2 代價和收益
36.3 STATE模式
36.3.1 STATE模式和 STRATEGY模式
36.3.2 代價和收益
36.4 狀態(tài)機編譯器
36.4.1 SMC生成的Turnstile.cs以及其他支持文件
36.4.2 代價和收益
36.5 狀態(tài)機應用的場合
36.5.1 作為GUI中的高層應用策略
36.5.2 GUI交互控制器
36.5.3 分布式處理
36.6 結論
36.7 參考文獻
第37章 薪水支付案例研究:數據庫
37.1 構建數據庫
37.2 一個代碼設計缺陷
37.3 增加雇員
37.4 事務
37.5 加載Employee對象
37.6 還有什么工作
第38章 薪水支付系統(tǒng)用戶界面:Model-View-Presenter
38.1 界面
38.2 實現(xiàn)
38.3 構建窗口
38.4 Payroll窗口
38.5 真面目
38.6 結論
38.7 參考文獻
附錄A 雙公司記
Rufus公司:“日落”項目
Rupert工業(yè)公司:“朝暉”項目
附錄B 什么是軟件
索引
封面圖: