編輯推薦
用戶的需求經常變化,每個開發者都深受其害。不過,如果能夠提高代碼的自適應性,就能更加輕鬆地響應變化,避免重復勞動。本書介紹瞭敏捷編程的best practice、原則和模式,能讓你編寫齣靈活的自適應性代碼,從而創造更大的商業價值。
專傢指導,幫你跨越理論和實踐之間的鴻溝
- 熟練運用Scrum:工件、角色、度量標準、階段
- 組織和管理架構的依賴關係
- 迴顧各種模式、反模式以及best practice
- 掌握SOLID原則
- 管理自適應代碼的各種接口應用方式
- 先後進行單元測試和重構
- 觀察委托和抽象如何影響代碼自適應性
- 學習實現依賴注入的推薦方式
- 將學到的知識應用於敏捷開發的實際項目
內容簡介
本書共分為敏捷基礎、編寫SOLID代碼和自適應實例三大部分,將理論與實踐相結閤,介紹瞭當前使用Microsoft .NET Framework進行C#編程的傑齣實踐,詳盡探討瞭C#開發人員如何應用Scrum等敏捷方案實現高質量、自適應的代碼,並給齣大量代碼示例,是.NET中高級程序員進階的實用指南。
作者簡介
Gary McLean Hall
Microsoft .NET Framework開發大師,特彆擅長設計模式和業內的傑齣實踐。多年來,他參加過很多緻力於創造自適應代碼的敏捷團隊,為諸如Eidos、Xerox、Nephila Capital和LateRooms Group等公司工作過。近幾年,他在運營自己的軟件顧問公司。在每個工作崗位上,他都能夠非常齣色地做到:在按時交付軟件産品的同時保證産品源代碼的高質量。
許順強
本科和碩士畢業於南京航空航天大學機電學院航空宇航製造工程專業,2006年畢業後任教於西安空軍工程大學飛行器動力工程係,兩年後加入聯想深圳研發實驗室從事ThinkPad係列軟件研發工作至今。工作方麵的主要興趣點有設備互聯和網絡傳輸等軟件技術領域,以及Scrum和XP等敏捷軟件開發過程。推崇易懂易測、整潔優美的軟件代碼。
目錄
第一部分 敏捷基礎
第1章 Scrum介紹 3
1.1 Scrum與瀑布 4
1.2 角色和職責 6
1.2.1 産品負責人 7
1.2.2 Scrum主管 7
1.2.3 開發團隊 8
1.2.4 “豬”和“雞” 8
1.3 工件 9
1.3.1 Scrum麵闆 9
1.3.2 圖錶和度量標準 20
1.3.3 積壓工作 24
1.4 衝刺 25
1.4.1 發布計劃會議 26
1.4.2 衝刺計劃會議 26
1.4.3 每日站立會議 28
1.4.4 衝刺演示會議 29
1.4.5 衝刺迴顧會議 30
1.4.6 Scrum日曆 31
1.5 Scrum和敏捷的問題 32
1.6 總結 36
第2章 依賴和分層 37
2.1 依賴的定義 38
2.1.1 一個簡單的例子 38
2.1.2 使用有嚮圖對依賴建模 44
2.2 依賴管理 48
2.2.1 實現與接口 48
2.2.2 new代碼味道 49
2.2.3 對象構造的替代方法 52
2.2.4 隨從反模式 54
2.2.5 階梯模式 56
2.2.6 依賴解析 57
2.2.7 使用NuGet管理依賴 67
2.3 分層 70
2.3.1 常見的模式 71
2.3.2 縱切關注點 76
2.3.3 非對稱分層 77
2.4 總結 79
第3章 接口和設計模式 80
3.1 接口是什麼 80
3.1.1 語法 80
3.1.2 顯式實現 83
3.1.3 多態 87
3.2 自適應設計模式 88
3.2.1 空對象模式 88
3.2.2 適配器模式 94
3.2.3 策略模式 96
3.3 更多形式 98
3.3.1 鴨子類型 98
3.3.2 混閤類型 102
3.3.3 流接口 106
3.4 總結 108
第4章 單元測試和重構 109
4.1 單元測試 109
4.1.1 布置、動作和斷言 110
4.1.2 測試驅動開發 113
4.1.3 更復雜的測試 118
4.2 重構 131
4.2.1 更改已有代碼 131
4.2.2 一個新的賬戶類型 139
4.3 總結 144
第二部分 編寫SOLID代碼
第5 章 單一職責原則 147
5.1 問題描述 147
5.1.1 重構清晰度 150
5.1.2 重構抽象 153
5.2 單一職責原則和修飾器模式 160
5.2.1 復閤模式 162
5.2.2 謂詞修飾器 165
5.2.3 分支修飾器 168
5.2.4 延遲修飾器 169
5.2.5 日誌記錄修飾器 170
5.2.6 性能修飾器 172
5.2.7 異步修飾器 175
5.2.8 修飾屬性和事件 177
5.3 用策略模式替代switch語句 178
5.4 總結 180
第6章 開放與封閉原則 181
6.1 開放與封閉原則介紹 181
6.1.1 Meyer的定義 181
6.1.2 Martin的定義 181
6.1.3 缺陷修復 182
6.1.4 客戶端感知 182
6.2 擴展點 183
6.2.1 沒有擴展點的代碼 183
6.2.2 虛方法 184
6.2.3 抽象方法 184
6.2.4 接口繼承 185
6.2.5 “為繼承設計或禁止繼承” 186
6.3 防止變異 186
6.3.1 可預見的變化 187
6.3.2 一個穩定的接口 187
6.3.3 足夠的自適應能力 187
6.4 總結 188
第7章 Liskov替換原則 189
7.1 Liskov替換原則介紹 189
7.1.1 正式定義 189
7.1.2 Liskov替換原則的規則 190
7.2 契約 190
7.2.1 前置條件 192
7.2.2 後置條件 193
7.2.3 數據不變式 194
7.2.4 Liskov契約規則 195
7.2.5 代碼契約 201
7.3 協變和逆變 208
7.3.1 定義 208
7.3.2 Liskov類型係統規則 213
7.4 總結 216
第8章 接口分離原則 217
8.1 一個分離接口的示例 217
8.1.1 一個簡單的CRUD接口 217
8.1.2 緩存 223
8.1.3 多重接口修飾 226
8.2 客戶端構建 228
8.2.1 多實現、多實例 229
8.2.2 單實現、單實例 231
8.2.3 超級接口反模式 232
8.3 接口分離 233
8.3.1 客戶端需要 233
8.3.2 架構需要 239
8.3.3 單方法接口 243
8.4 總結 244
第9章 依賴注入原則 245
9.1 簡單的開始 245
9.1.1 任務列錶應用 248
9.1.2 對象圖的構建 250
9.1.3 控製反轉 254
9.2 比較復雜的注入 267
9.2.1 服務定位器反模式 267
9.2.2 非法注入 270
9.2.3 組閤根 272
9.2.4 約定優於配置 277
9.3 總結 280
第三部分 自適應實例
第10章 自適應實例簡介 284
10.1 Trey Research公司 284
10.1.1 團隊 284
10.1.2 産品 286
10.2 最初的産品積壓工作 287
10.2.1 從描述中挖掘故事 287
10.2.2 故事點估算 288
10.3 總結 292
第11章 自適應實例衝刺1 293
11.1 計劃會議 293
11.2 “我想創建多個房間以對會話進行分類” 295
11.2.1 控製器 295
11.2.2 房間存儲庫 299
11.3 “我想查看代錶會話的房間的列錶” 303
11.4 “我想查看發送到一個房間內的消息” 307
11.5 “我想給房間內的其他成員發送純文本消息” 309
11.6 演示會議 311
11.7 迴顧會議 311
11.7.1 什麼做得比較好 312
11.7.2 什麼做得不太好 312
11.7.3 什麼需要改變 313
11.7.4 什麼需要保持 314
11.7.5 遇到瞭什麼意料之外的事情 314
11.8 總結 315
第12章 自適應實例衝刺2 316
12.1 計劃會議 316
12.2 “我想發送正確格式化的標記” 317
12.3 “我想過濾消息內容以確保它是適閤發錶的” 321
12.4 “我想同時服務數百個用戶” 323
12.5 演示會議 325
12.6 迴顧會議 326
12.6.1 什麼做得比較好 326
12.6.2 什麼做得不太好 327
12.6.3 什麼需要改變 327
12.6.4 什麼需要保持 327
12.6.5 遇到瞭什麼意料之外的事情 327
12.7 總結 328
附錄 自適應工具 329
前言/序言
C#敏捷開發實踐 下載 mobi epub pdf txt 電子書