扫描二维码,下载手机APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

C#敏捷开发实践

综合评级:
★★★★★

定价:
¥69.00

作者:
加里.麦克莱恩.霍尔

出版社:
人民邮电

出版日期:
2016/07/01

页数:
334

ISBN:
9787115427892

书籍介绍

本书共分为敏捷基础、编写solid代码和自适应实例三大部分,将理论与实践相结合,介绍了当前使用microsoft .net framework进行c#编程的杰出实践,详尽探讨了c#开发人员如何应用scrum等敏捷方案实现高质量、自适应的代码,并给出大量代码示例,是.net中高级程序员进阶的实用指南。

用户的需求经常变化,每个开发者都深受其害。不过,如果能够提高代码的自适应性,就能更加轻松地响应变化,避免重复劳动。本书介绍了敏捷编程的best practice、原则和模式,能让你编写出灵活的自适应性代码,从而创造更大的商业价值。

作者简介

Gary McLean Hall 资深Microsoft .NET Framework开发大师,特别擅长设计模式和业内的*佳实践。多年来,他参加过很多致力于创造自适应代码的敏捷团队,为诸如Eidos、Xerox、Nephila Capital和LateRooms Group等公司工作过。近几年,他在运营自己的软件顾问公司。在每个工作岗位上,他都能够非常出色地做到:在按时交付软件产品的同时保证产品源代码的高质量。

目录

第一部分 敏捷基础

第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