新書推薦:
《
超越百岁看这本就够了
》
售價:HK$
57.3
《
亚洲戏剧史·南亚卷
》
售價:HK$
147.2
《
中国历代竹器图谱与数字活化
》
售價:HK$
572.7
《
EDA技术与设计(第2版)
》
售價:HK$
87.3
《
揉碎浪漫(全两册)
》
售價:HK$
72.2
《
古籍善本
》
售價:HK$
552.0
《
人民币国际化报告2024:可持续全球供应链体系与国际货币金融变革
》
售價:HK$
89.7
《
道德经新注 81幅作者亲绘哲理中国画,图文解读道德经
》
售價:HK$
147.2
編輯推薦:
用户的需求经常变化,每个开发者都深受其害。不过,如果能够提高代码的自适应性,就能更加轻松地响应变化,避免重复劳动。本书介绍了敏捷编程的best practice、原则和模式,能让你编写出灵活的自适应性代码,从而创造更大的商业价值。
內容簡介:
本书共分为敏捷基础、编写SOLID代码和自适应实例三大部分,将理论与实践相结合,介绍了当前使用Microsoft .NET Framework进行C#编程的杰出实践,详尽探讨了C#开发人员如何应用Scrum等敏捷方案实现高质量、自适应的代码,并给出大量代码示例,是.NET中高级程序员进阶的实用指南。
關於作者:
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 总结143
第二部分 编写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章 自适应实例冲刺1293
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章 自适应实例冲刺2316
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