敏捷软件开发

敏捷软件开发 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:Robert C.Martin,
出品人:
页数:560
译者:邓辉
出版时间:2010-12
价格:79.00元
装帧:平装
isbn号码:9787115239976
丛书系列:图灵程序设计丛书·程序员修炼系列
图书标签:
  • 敏捷开发
  • 软件开发
  • 软件工程
  • 设计模式
  • C
  • #计算机
  • 编程
  • 程序设计
  • 敏捷开发
  • 软件工程
  • 编程
  • 项目管理
  • 迭代开发
  • 持续交付
  • 团队协作
  • 用户体验
  • 需求分析
  • 敏捷框架
想要找书就要到 小哈图书下载中心
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

要想成为一名优秀的软件开发人员,需要熟练应用编程语言和开发工具,更重要的是能够领悟优美代码背后的原则和前人总结的经验——这正是本书的主题。本书凝聚了世界级软件开发大师Robert C. Martin数十年软件开发和培训经验,Java版曾荣获计算机图书最高荣誉——Jolt大奖,是广受推崇的经典著作,自出版以来一直畅销不衰。

不要被书名误导了,本书不是那种以开发过程为主题的敏捷软件开发类图书。在书中,作者延续了自己一贯的写作风格,让你亲历现场,并用幽默亲切的语言和插图,通过一步步展示来自开发一线的代码,分析各种设计决策及其得失,以清晰、易于理解的方式讲述了真实程序设计中最基本然而也是最难做到正确应用的原则(包括SRP、LSP、OCP、DIP、ISP等类设计原则,以及多个包设计原则)与设计模式(不限于GoF经典模式,包括许多作者自己的成果)。

本书不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作,而且还是一部通俗的敏捷方法导引书和快速实用的UML教程。通过本书你会发现,许多以前开起来非常枯燥费解的概念,突然间都豁然开朗,变得鲜活生动起来。

C#版与此前的Java版相比,主要的更新包括加强了UML的介绍章节,使其更贴近实战,增加了对MVP模式的介绍等。

作者简介

Robert C. Martin(“Bob”大叔)世界级的软件开发大师,著名软件咨询公司Object Mentor公司的创始人和总裁。曾担任C++ Report杂志主编多年,也是设计模式和敏捷开发运动的主要倡导者之一。

Micah Martin Robert C. Martin之子,也是经验丰富的软件工程师,曾任Object Mentor公司的咨询师,现任8th Light公司总裁。擅长.NET、面向对象技术、模式和敏捷开发。他是开源测试工具FitNesse的主要开发者。

目录信息

第一部分 敏捷开发
第1章 敏捷实践 3
1.1 敏捷联盟 4
1.1.1 人和交互重于过程和工具 4
1.1.2 可以工作的软件重于面面
俱到的文档 5
1.1.3 客户合作重于合同谈判 5
1.1.4 随时应对变化重于遵循计划 6
1.2 原则 6
1.3 结论 8
1.4 参考文献 8
第2章 极限编程概述 9
2.1 极限编程实践 9
2.1.1 完整团队 9
2.1.2 用户故事 10
2.1.3 短交付周期 10
2.1.4 验收测试 10
2.1.5 结对编程 11
2.1.6 测试驱动开发 11
2.1.7 集体所有 12
2.1.8 持续集成 12
2.1.9 可持续的开发速度 12
2.1.10 开放的工作空间 13
2.1.11 计划游戏 13
2.1.12 简单设计 13
2.1.13 重构 14
2.1.14 隐喻 14
2.2 结论 15
2.3 参考文献 15
第3章 计划 16
3.1 初始探索 17
3.2 发布计划 17
3.3 迭代计划 18
3.4 定义“完成” 18
3.5 任务计划 18
3.6 迭代 19
3.7 跟踪 19
3.8 结论 20
3.9 参考文献 21
第4章 测试 22
4.1 测试驱动开发 22
4.1.1 优先设计测试的例子 23
4.1.2 测试促使模块之间隔离 24
4.1.3 意外获得的解耦合 25
4.2 验收测试 26
4.3 意外获得的构架 27
4.4 结论 27
4.5 参考文献 28
第5章 重构 29
5.1 素数产生程序:一个简单的重构示例 30
5.1.1 单元测试 31
5.1.2 重构 32
5.1.3 最后审视 35
5.2 结论 38
5.3 参考文献 39
第6章 一次编程实践 40
6.1 保龄球比赛 40
6.2 结论 75
第二部分 敏捷设计
第7章 什么是敏捷设计 81
7.1 设计臭味 81
7.1.1 设计臭味——腐化软件的气味 82
7.1.2 僵化性 82
7.1.3 脆弱性 82
7.1.4 顽固性 82
7.1.5 粘滞性 82
7.1.6 不必要的复杂性 83
7.1.7 不必要的重复 83
7.1.8 晦涩性 83
7.2 软件为何会腐化 84
7.3 Copy程序 84
7.3.1 熟悉的场景 84
7.3.2 Copy程序的敏捷设计 87
7.4 结论 88
7.5 参考文献 88
第8章 SRP:单一职责原则 89
8.1 定义职责 90
8.2 分离耦合的职责 91
8.3 持久化 92
8.4 结论 92
8.5 参考文献 92
第9章 OCP:开放-封闭原则 93
9.1 OCP概述 94
9.2 Shape应用程序 95
9.2.1 违反OCP 95
9.2.2 遵循OCP 97
9.2.3 预测变化和“贴切的”结构 98
9.2.4 放置吊钩 99
9.2.5 使用抽象获得显式封闭 99
9.2.6 使用“数据驱动”的方法获取封闭性 100
9.3 结论 101
9.4 参考文献 101
第10章 LSP:Liskov替换原则 102
10.1 违反LSP的情形 103
10.1.1 简单例子 103
10.1.2 更微妙的违反情形 104
10.1.3 实际的例子 108
10.2 用提取公共部分的方法代替继承 111
10.3 启发式规则和习惯用法 113
10.4 结论 114
10.5 参考文献 114
第11章 DIP:依赖倒置原则 115
11.1 层次化 116
11.1.1 倒置的接口所有权 117
11.1.2 依赖于抽象 117
11.2 简单的DIP示例 117
11.3 熔炉示例 119
11.4 结论 121
11.5 参考文献 121
第12章 ISP:接口隔离原则 122
12.1 接口污染 122
12.2 分离客户就是分离接口 123
12.3 类接口与对象接口 124
12.3.1 使用委托分离接口 124
12.3.2 使用多重继承分离接口 125
12.4 ATM用户界面的例子 126
12.5 结论 131
12.6 参考文献 131
第13章 写给C#程序员的UML概述 132
13.1 类图 134
13.2 对象图 135
13.3 顺序图 136
13.4 协作图 136
13.5 状态图 137
13.6 结论 137
13.7 参考文献 137
第14章 使用UML 138
14.1 为什么建模 138
14.1.1 为什么构建软件模型 139
14.1.2 编码前应该构建面面俱到的设计吗 139
14.2 有效使用UML 139
14.2.1 与他人交流 139
14.2.2 脉络图 141
14.2.3 项目结束文档 142
14.2.4 要保留的和要丢弃的 142
14.3 迭代式改进 143
14.3.1 行为优先 143
14.3.2 检查结构 144
14.3.3 想象代码 146
14.3.4 图的演化 147
14.4 何时以及如何绘制图示 147
14.4.1 何时要画图,何时不要画图 147
14.4.2 CASE 工具 148
14.4.3 那么,文档呢 149
14.5 结论 149
第15章 状态图 150
15.1 基础知识 150
15.1.1 特定事件 151
15.1.2 超状态 152
15.1.3 初始伪状态和结束伪状态 153
15.2 使用FSM图示 153
15.3 结论 154
第16章 对象图 155
16.1 即时快照 155
16.2 主动对象 156
16.3 结论 159
第17章 用例 160
17.1 编写用例 160
17.1.1 备选流程 161
17.1.2 其他东西呢 161
17.2 用例图 162
17.3 结论 162
17.4 参考文献 162
第18章 顺序图 163
18.1 基础知识 163
18.1.1 对象、生命线、消息及其他 164
18.1.2 创建和析构 164
18.1.3 简单循环 165
18.1.4 时机和场合 166
18.2 高级概念 168
18.2.1 循环和条件 168
18.2.2 耗费时间的消息 169
18.2.3 异步消息 171
18.2.4 多线程 174
18.2.5 主动对象 175
18.2.6 向接口发送消息 175
18.3 结论 175
第19章 类图 177
19.1 基础知识 177
19.1.1 类 177
19.1.2 关联 178
19.1.3 继承 179
19.2 类图示例 180
19.3 细节 181
19.3.1 类衍型 181
19.3.2 抽象类 182
19.3.3 属性 183
19.3.4 聚集 183
19.3.5 组合 184
19.3.6 多重性 185
19.3.7 关联衍型 186
19.3.8 内嵌类 187
19.3.9 关联类 187
19.3.10 关联修饰符 187
19.4 结论 188
19.5 参考文献 188
第20章 咖啡的启示 189
20.1 Mark IV型专用咖啡机 189
20.1.1 规格说明书 190
20.1.2 常见的丑陋方案 192
20.1.3 虚构的抽象 193
20.1.4 改进方案 194
20.1.5 实现抽象模型 198
20.1.6 这个设计的好处 209
20.2 面向对象过度设计 214
20.3 参考文献 214
第三部分 薪水支付案例研究
第21章 COMMAND模式和ACTIVE OBJECT模式:多功能与多任务 219
21.1 简单的Command 220
21.2 事务 221
21.2.1 实体上解耦和时间上解耦 222
21.2.2 时间上解耦 223
21.3 Undo()方法 223
21.4 ACTIVE OBJECT模式 224
21.5 结论 227
21.6 参考文献 228
第22章 TEMPLATE METHOD模式和STRATEGY模式:继承和委托 229
22.1 TEMPLATE METHOD模式 230
22.1.1 滥用模式 232
22.1.2 冒泡排序 232
22.2 STRATEGY模式 235
22.3 结论 239
22.4 参考文献 239
第23章 FACADE模式和MEDIATOR模式 240
23.1 FACADE模式 240
23.2 MEDIATOR模式 241
23.3 结论 243
23.4 参考文献 243
第24章 SINGLETON模式和MONOSTATE模式 244
24.1 SINGLETON模式 245
24.1.1 SINGLETON模式的好处 246
24.1.2 SINGLETON模式的代价 246
24.1.3 运用SINGLETON模式 246
24.2 MONOSTATE模式 247
24.2.1 MONOSTATE模式的好处 249
24.2.2 MONOSTATE模式的代价 249
24.2.3 运用MONOSTATE模式 249
24.3 结论 253
24.4 参考文献 253
第25章 NULL OBJECT模式 254
25.1 描述 254
25.2 结论 256
25.3 参考文献 256
第26章 薪水支付案例研究:第一次迭代开始 257
26.1 初步的规格说明 257
26.2 基于用例分析 258
26.2.1 增加新雇员 259
26.2.2 删除雇员 260
26.2.3 登记考勤卡 260
26.2.4 登记销售凭条 260
26.2.5 登记工会服务费 261
26.2.6 更改雇员明细 261
26.2.7 发薪日 263
26.3 反思:找出底层的抽象 264
26.3.1 雇员支付类别抽象 264
26.3.2 支付时间表抽象 265
26.3.3 支付方式 266
26.3.4 从属关系 266
26.4 结论 266
26.5 参考文献 267
第27章 薪水支付案例研究:实现 268
27.1 事务 268
27.1.1 增加雇员 269
27.1.2 删除雇员 273
27.1.3 考勤卡、销售凭条以及服务费用 274
27.1.4 更改雇员属性 280
27.1.5 犯了什么晕 287
27.1.6 支付雇员薪水 290
27.1.7 支付领月薪的雇员薪水 292
27.1.8 支付钟点工薪水 294
27.2 主程序 302
27.3 数据库 303
27.4 结论 304
27.5 关于本章 304
27.6 参考文献 305
第四部分 打包薪水支付系统
第28章 包和组件的设计原则 308
28.1 包和组件 308
28.2 组件的内聚性原则:粒度 309
28.2.1 重用—发布等价原则 309
28.2.2 共同重用原则 310
28.2.3 共同封闭原则 311
28.2.4 组件内聚性总结 311
28.3 组件的耦合性原则:稳定性 311
28.3.1 无环依赖原则 311
28.3.2 稳定依赖原则 316
28.3.3 稳定抽象原则 319
28.4 结论 322
第29章 FACTORY模式 323
29.1 依赖问题 325
29.2 静态类型与动态类型 326
29.3 可替换的工厂 326
29.4 对测试支架使用对象工厂 327
29.5 工厂的重要性 328
29.6 结论 329
29.7 参考文献 329
第30章 薪水支付案例研究:包分析 330
30.1 组件结构和符号 330
30.2 应用CCP 332
30.3 应用REP 333
30.4 耦合和封装 335
30.5 度量 336
30.6 度量薪水支付应用程序 337
30.6.1 对象工厂 340
30.6.2 重新思考内聚的边界 342
30.7 最终的包结构 342
30.8 结论 345
30.9 参考文献 345
第31章 COMPOSITE模式 346
31.1 组合命令 347
31.2 多重性还是非多重性 348
31.3 结论 348
第32章 OBSERVER——演化至模式 349
32.1 数字时钟 350
32.2 OBSERVER模式 365
32.2.1 模型 365
32.2.2 面向对象设计原则的运用 366
32.3 结论 366
32.4 参考文献 367
第33章 ABSTRACT SERVER模式、 ADAPTER模式和BRIDGE模式 368
33.1 ABSTRACT SERVER模式 369
33.2 ADAPTER模式 370
33.2.1 类形式的ADAPTER模式 370
33.2.2 调制解调器问题、适配器以及LSP 370
33.3 BRIDGE模式 374
33.4 结论 375
33.5 参考文献 376
第34章 PROXY模式和GATEWAY模式:管理第三方API 377
34.1 PROXY模式 377
34.1.1 实现PROXY模式 381
34.1.2 小结 391
34.2 数据库、中间件以及其他第三方接口 392
34.3 TABLE DATA GATEWAY 394
34.3.1 测试和内存TDG 399
34.3.2 测试DbGateWay 400
34.4 可以用于数据库的其他模式 403
34.5 结论 404
34.6 参考文献 404
第35章 VISITOR模式 405
35.1 VISITOR模式 406
35.2 ACYCLIC VISITOR模式 409
35.3 DECORATOR模式 418
35.4 EXTENSION OBJECT模式 423
35.5 结论 432
35.6 参考文献 432
第36章 STATE模式 433
36.1 嵌套switch/case语句 434
36.1.1 内部作用域的状态变量 436
36.1.2 测试动作 436
36.1.3 代价和收益 436
36.2 迁移表 437
36.2.1 使用表解释 437
36.2.2 代价和收益 438
36.3 STATE模式 439
36.3.1 STATE模式和 STRATEGY模式 441
36.3.2 代价和收益 442
36.4 状态机编译器 442
36.4.1 SMC生成的Turnstile.cs以及其他支持文件 443
36.4.2 代价和收益 448
36.5 状态机应用的场合 448
36.5.1 作为GUI中的高层应用策略 448
36.5.2 GUI交互控制器 450
36.5.3 分布式处理 450
36.6 结论 451
36.7 参考文献 451
第37章 薪水支付案例研究:数据库 452
37.1 构建数据库 452
37.2 一个代码设计缺陷 453
37.3 增加雇员 455
37.4 事务 464
37.5 加载Employee对象 468
37.6 还有什么工作 478
第38章 薪水支付系统用户界面:Model-View-Presenter 479
38.1 界面 480
38.2 实现 481
38.3 构建窗口 489
38.4 Payroll窗口 495
38.5 真面目 504
38.6 结论 505
38.7 参考文献 505
附录A 双公司记 506
Rufus公司:“日落”项目 506
Rupert工业公司:“朝阳”项目 506
附录B 什么是软件 516
索引 524
· · · · · · (收起)

读后感

评分

很早就想看这本书了。在旧书摊买了本旧版的英文影印的,但最终还是看了新出的c#版的。新版把旧版的代码翻成了c#,在内容上做了一些取舍,增加了uml的相关章节。但是感觉作者c#的功力不够,翻得代码有些问题,有些概念也不清楚。如直接把成员变量暴露出去,在需要时再改成属性,...  

评分

根据最近所阅读到的,对断言语义(assert semantic)感触颇深。断言的实际应用莫过于契约编程,而契约是一种人与人之间社会行为。我说了,你定要做到,你做不到,那就得给予我赔偿。我觉得不妨理解为自省,一种超我自我超越本我的自发行为。我发现自己这块做不到,我就要努力去...  

评分

这本书的书名说的很准确,它讲的是一种思想,一种开发过程,这个过程中需要注意的原则,会用到的模式。 也许没有人能一遍就完全看懂这本书,所以,我的评价是,这本书值得你对无数遍,知道你了解其中所有的细节...  

评分

这本书是我见过的讲述敏捷设计、开发书籍中最棒的一本!尤其是前半部分中OOP设计原则的讲述,非常佩服Bob大叔对设计原则的总结。后半部分感觉涉及到细节太繁琐了就没看完,不过这无损于这本名著的光芒!这本书可以和其它讲述设计模式的相关书籍一起阅读,相得益彰。 读书笔记...  

评分

好的技术书籍的标准是通俗易懂;文字精炼;耐读,有吸引力;有思想性。 uncle bob的书写功力有目共睹,而且他的技术修为也绝对无人质疑。因此他写的这本书秉承了他一贯的优势。符合所有好处所具备的条件。所有我们可以毫无内疚的宣称,“这本书是我见过最好的书”。 孟岩作序...  

用户评价

评分

翻开这本名为“星际航行简史”的著作,我立刻被带入了一个宏大而充满想象力的叙事空间。它并非传统意义上的硬科幻,而更像是一部融合了历史学、社会学和天体物理学的跨界作品。作者的叙事节奏把握得极其精准,开篇便以人类对夜空的第一次集体凝视为引子,缓缓铺陈出从伽利略的望远镜到詹姆斯·韦伯空间望远镜的演进史。最让我印象深刻的是其中关于“曲速引擎”理论发展的社会经济影响分析。书中详细描绘了假设星际旅行成为现实后,全球资源分配、文化冲突与新型政治实体的形成过程,这种对技术与社会互动影响的深刻洞察,远比单纯描述飞船性能要引人入胜得多。语言风格上,它充满了古典的浪漫主义色彩,大量运用了排比和象征手法,使得原本冰冷的技术名词也焕发出了人文的光芒。虽然对某些前沿的量子引力理论着墨不多,但它成功地构建了一个可供读者深思的未来图景,读完后久久不能平静。

评分

读完“后人类主义的伦理困境”,我感觉自己的世界观被彻底颠覆了一遍。这本书探讨的核心议题是如何在我们即将迈入人机融合的时代,重新定义“人性”与“道德责任”。作者的观点尖锐而富有挑战性,他并未简单地拥抱或排斥技术,而是提出了一系列极富思辨性的“思想实验”。例如,关于意识上传后原先肉体死亡的合法性讨论,以及高度增强型个体是否应享有更多公民权利的争辩,都写得引人深思。这本书的结构非常开放,更像是一系列圆桌讨论的精彩摘录,每章都会引入一位虚拟的专家对某个特定技术伦理问题进行辩论,使得内容充满了活力和多角度的审视。它的语言风格非常现代和直白,夹杂着一些未来学的流行词汇,但背后的哲学根基却非常深厚,完全没有沦为哗众取宠的科幻畅想。对于关注AI治理和生物技术未来的人来说,这本书无疑是一剂强效的“清醒剂”。

评分

这本新近读完的“深度学习的艺术”简直让人爱不释手,它并非那种晦涩难懂的教科书,而是像一位经验丰富的导师,手把手地将复杂的神经网络结构拆解开来,用极为生动的比喻和恰到好处的数学推导,引领读者走进这个迷人的领域。作者在介绍卷积神经网络(CNN)时,没有止步于讲解滤波器和池化的作用,而是深入剖析了它们如何在图像识别任务中模仿人类视觉皮层的机制,这一点尤其令我震撼。我特别欣赏它对“泛化能力”的强调,书中用大量篇幅讨论了过拟合的成因及其对策,比如正则化、Dropout的精妙之处,甚至还涉及到了早期的贝叶斯方法在模型不确定性估计上的应用,这使得整本书的理论深度远超市面上许多只停留在应用层面的指南。阅读过程中,我时常需要停下来,对照代码实现思考其中的逻辑闭环,每一次“顿悟”都带来了极大的满足感。它成功地平衡了理论的严谨性和实践的可操作性,对于希望从“会用”迈向“理解”的工程师来说,这是一份不可多得的财富。

评分

“文艺复兴时期的佛罗伦萨:权力、艺术与商业的交响”这本书的阅读体验,是一场穿越时空的沉浸式体验。它没有采用传统的编年史写法,而是巧妙地围绕“美第奇家族的赞助体系”这一核心脉络展开。作者的考据工作量之庞大令人咋舌,从银行复式记账法的起源,到当时丝绸贸易的利润率,再到一幅湿壁画的颜料采购清单,所有细节都被严谨地还原了。我特别喜欢其中关于“艺术品市场化”的探讨。书中详细分析了提香和米开朗基罗的作品如何在不同城邦间流通、估价和定价的过程,揭示了艺术品在当时就已经成为一种重要的金融资产和外交工具。它的论证逻辑层层递进,旁征博引,引用的一手资料如私人信件和市政记录比比皆是,让读者切实感受到历史的重量和温度。虽然对习惯了快节奏阅读的现代人来说,初读时需要一定的耐心去消化那些复杂的家族关系和经济术语,但一旦进入状态,那种对历史肌理的洞察感是无与伦比的。

评分

我要强烈推荐“非欧几何基础:从黎曼流形到拓扑空间”——一本表面上看起来极为学术,实则充满了哲学思辨的数学专著。这本书的叙事结构极为清晰,它不像一些教材那样直接抛出公理,而是先从欧几里得几何的内在矛盾出发,引导读者逐步认识到“空间”概念的局限性。作者对黎曼几何的介绍尤其精彩,他没有仅仅停留在度量张量和曲率张量的计算上,而是花了大量的篇幅讨论了“测地线”作为“最短路径”的概念在不同曲率空间中的意义转变,这极大地拓宽了我对“距离”的理解。更具启发性的是,书中穿插了大量关于康德先验直观的讨论,探讨了人类认知结构与数学结构之间的关系。这本书的语言风格是极其凝练和精确的,几乎没有一句废话,但又不失数学家特有的优雅。它要求读者具备一定的微积分基础,但对于任何想在高等数学领域寻求深度探索的读者来说,它提供了坚实的理论基石和无尽的思考源泉。

评分

很好的书,强调并展示了软件开发过程中迭代的过程,这是很难得的。

评分

越简单越有效、small is good 。 万不得已,绝不画 UML 用例图、文档要少,不然就不会看

评分

很好的书,强调并展示了软件开发过程中迭代的过程,这是很难得的。

评分

讲解 OOP and 设计模式的经典之作

评分

只能算是翻了一半,唉,现在已经转语言了,接触C#就不多了

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 qciss.net All Rights Reserved. 小哈图书下载中心 版权所有