书籍详情
代码大全2(英文限量珍藏版)
作者:[美] 史蒂夫·麦康奈尔(Steve McConnell) 著
出版社:清华大学出版社
出版时间:2020-07-01
ISBN:9787302546283
定价:¥127.00
购买这本书可以去
内容简介
《代码大全 : 英文限量珍藏版》作为名家经典著作,是一本完整的软件构建手册,涵盖软件构建过程中的所有细节。它从软件质量和编程思想等方面论述软件构建的各个主题,并详细论述主流的新技术、高屋建瓴的观点和通用的概念,还含有丰富而典型的程序示例。本书所论述的技术不仅填补了初级与中高级编程技术之间的空白,同时还为程序员提供了一个有关编程技巧的信息来源。 《代码大全 : 英文限量珍藏版》对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生大有帮助。无论是什么背景的读者,都可以通过以阅读和领会本书,在更短的时间内更轻松地写出更好、更简洁和更优雅的程序。
作者简介
史蒂夫·麦康奈尔 (Steve McConnell)● 与比尔·盖茨和Linux之父林纳斯·托瓦兹齐名 ●《软件开发》杂志两届技术类图书震撼大奖得主 ● 《软件开发》杂志两届生产力效率大奖得主 ● 华盛顿西雅图大学校友会专业成就奖 ● IEEE计算机学会金牌核心奖章得主 ● 《普吉特商业杂志》杰出青年人物奖 ● 硅谷工程领导力峰会常年演讲嘉宾
目录
第I 部分 奠定基础
第1 章 欢迎来到软件构建的世界 3
第2 章 有助于更充分理解软件开发的隐喻 9
第3 章 谋定而后动:前期准备 23
第4 章 关键的“构建”决策 61
第II 部分 创建高质量的代码
第5 章 软件构建中的设计 73
第6 章 可以工作的类 125
第7 章 高质量的例程 161
第8 章 防御性编程 187
第9 章 伪代码编程过程 215
第III 部分 变量
第10 章 变量中使用的一般性难题 237
第11 章 变量名的力量 259
第12 章 基本数据类型 291
第13 章 不常用的数据类型 319
第IV 部分 语句
第14 章 直线性代码的组织 347
第15 章 条件语句的使用 355
第16 章 控制循环 367
第17 章 不太常见的控制结构 391
第18 章 表驱动的方法 411
第19 章 常见的控制难题 431
第V 部分 代码改进
第20 章 软件质量的全景观 463
第21 章 协同构建代码 479
第22 章 开发人员和测试 499
第23 章 调试 535
第24 章 重构 563
第25 章 代码调优策略 587
第26 章 代码调优技术 609
第VI 部分 系统级考量
第27 章 程序规模对构建的影响 649
第28 章 对软件构建进行管理 661
第29 章 集成 689
第30 章 编程工具 709
第VII 部分 软件匠艺
第31 章 布局和风格 729
第32 章 自带文档说明的代码 777
第33 章 个性 819
第34 章 软件工艺的话题 837
第35 章 更多信息来源 855
参考文献 863
索引 883
详细目录
第I 部分 奠 定 基 础
第1章 欢迎来到软件构建的世界 3
1.1 什么是软件构建? 3
1.2 软件构建的重要性 6
1.3 如何阅读本书 8
第2章 有助于更充分理解软件开发的隐喻 9
2.1 隐喻的重要性 9
2.2 如何使用软件隐喻 11
2.3 常见的软件隐喻 13
第3章 谋定而后动,前期准备 23
3.1 先决条件的重要性 24
3.2 确定要开发什么类型的软件 31
3.3 定义问题的先决条件 36
3.4 需求的先决条件 38
3.5 架构的先决条件 43
3.6 花在事前先决条件上的时间 55
第4章 关键的构建决策 61
4.1 编程语言的选择 61
4.2 编程约定 66
4.3 评估自己在技术浪潮中的位置 66
4.4 选择主流的构建实践 69
第II 部分 创建高质量的代码
第5章 软件构建中的设计 73
5.1 设计挑战 74
5.2 关键的设计概念 77
5.3 设计构建块:启发式 87
5.4 设计实践 110
5.5 点评各种流行的方法论 118
第6章 可以工作的类 125
6.1 类的基础知识 126
6.2 何为好的类的接口 133
6.3 设计和实现有哪些难题 143
6.4 创建类的理由 152
6.5 特定于语言的难题 156
6.6 超越类:软件包 156
第7章 高质量的例程 161
7.1 基于合理缘由来创建例程 164
7.2 在例程层级的设计 168
7.3 何为好的例程名称 171
7.4 一个例程多长为好? 173
7.5 如何使用例程的参数 174
7.6 使用函数时候的特殊考量 181
7.7 宏例程和内联例程 182
第8章 防御性编程 187
8.1 防止程序接收无效输入 188
8.2 断言 189
8.3 错误处理技术 194
8.4 异常 198
8.5 隔离程序,免受误操作所造成的损害 203
8.6 调试帮助 205
8.7 决定产品代码中保留多少防御性编程 209
8.8 关于防御性编程,要慎重 210
第9章 伪代码编程过程 215
9.1 总结构建类和例程的步骤 216
9.2 Pro伪代码 218
9.3 使用PPP构建例程 220
9.4 PPP的备选方案 232
第III 部分 变 量
第10章 变量使用中的一般性难题 237
10.1 数据的含义 238
10.2 让变量声明变得简单一些 239
10.3 初始化变量指导方针 240
10.4 范围 244
10.5 持久化 251
10.6 绑定时间 252
10.7 数据类型和控制结构的关系 254
10.8 变量名称要精准体现其用途 255
第11章 变量名的力量 259
11.1 选择好名称时的注意事项 259
11.2 特定数据类型的命名 264
11.3 命名约定的力量 270
11.4 非正式化命名约定 272
11.5 标准化前缀 279
11.6 名称要言简意赅 282
11.7 要避免哪些类型的名称 285
第12章 基础数据类型 291
12.1 数字 292
12.2 整数 293
12.3 浮点数 295
12.4 字符和字符串 297
12.5 布尔变量 301
12.6 枚举类型 303
12.7 命名常量 307
12.8 数组 310
12.9 创建自己的类型(类型别名) 311
第13章 不常用的数据类型 319
13.1 结构 319
13.2 指针 323
13.3 全局数据 335
第IV 部分 语 句
第14章 直线性代码的组织 347
14.1 必须按特定顺序组织的语句 347
14.2 顺序无所谓的语句 351
第15章 条件语句的使用 355
15.1 if语句 355
15.2 case语句 361
第16章 控制循环 367
16.1 如何选择循环的类型 367
16.2 对循环进行控制 373
16.3 轻松创建循环—由内而外 385
16.4 循环和数组之间的相关性 387
第17章 不太常见的控制结构 391
17.1 子例程的多种返回路径 391
17.2 递归 393
17.3 goto语句 398
17.4 如何看待不同寻常的控制结构 408
第18章 表驱动的方法 411
18.1 常见考量 411
18.2 直接方案表 413
18.3 索引访问表 425
18.4 单步访问表 426
18.5 其他的表查找范例 429
第19章 常见的控制难题 431
19.1 布尔表达式 431
19.2 复合语句(块) 443
19.3 Null语句 444
19.4 搞定危险的深度嵌套 445
19.5 编程基础:结构化编程 454
19.6 控制结构与复杂性 456
第V 部分 代码改进
第20章 软件质量的全景观 463
20.1 软件质量具备哪些特征 463
20.2 软件质量改进技巧 466
20.3 质量技术的相对有效性 469
20.4 质量保障何时做 473
20.5 软件质量的一般性原则 474
第21章 协作构建代码 479
21.1 协作开发实践概览 480
21.2 结对编程 483
21.3 正式检查 485
21.4 其他类型的协作开发实践 492
第22章 开发人员和测试 499
22.1 开发人员的测试角色 500
22.2 建议开发人员如何做测试 503
22.3 测试技巧汇总 505
22.4 典型错误 517
22.5 支持测试的工具 523
22.6 如何改进测试 528
22.7 保留测试记录 529
第23章 调试 535
23.1 调试难题概览 535
23.2 发现缺陷 540
23.3 修复缺陷 550
23.4 调试过程中的心理学考量 554
23.5 调试工具:明显的和不太明显的 556
第24章 重构 563
24.1 软件演进的几种类型 564
24.2 重构介绍 565
24.3 特定类型的重构 571
24.4 以安全的方式重构 579
24.5 重构策略 582
第25章 代码调优策略 587
25.1 性能概览 588
25.2 代码调优简介 591
25.3 蜜糖和哥斯拉 597
25.4 度量 603
25.5 迭代 605
25.6 总结代码调优的几种方式 606
第26章 代码调优技术 609
26.1 逻辑 610
26.2 循环 616
26.3 数据转换 624
26.4 表达式 630
26.5 子例程 639
26.6 用低级别的语言重写代码 640
26.7 变动越大,越要大部分一致 643
第VI 部分 系统级考量
第27章 程序规模对代码构建的影响 649
27.1 通信和大小 650
27.2 项目大小的范围 651
27.3 项目大小对错误的影响 651
27.4 项目大小对生产力的影响 653
27.5 项目大小对开发活动的影响 654
第28章 对软件构建进行管理 661
28.1 鼓励写好代码 662
28.2 配置管理 664
28.3 对构建日程表进行评估 671
28.4 度量 677
28.5 以人为本,程序员首先是人 680
28.6 向上管理 686
第29章 集成 689
29.1 集成方法的重要性不可小觑 689
29.2 集成的频率,按阶段还是按增量? 691
29.3 增量集成策略 694
29.4 每日构建和冒烟测试 702
第30章 编程工具 709
30.1 设计工具 710
30.2 源代码工具 710
30.3 可执行代码工具 716
30.4 面向工具的编程环境 720
30.5 自己构建编程工具 721
30.6 工具魔境 722
第VII 部分 软件匠艺
第31章 布局和风格 729
31.1 布局基础 730
31.2 布局 736
31.3 布局风格 738
31.4 控制结构的布局 745
31.5 单条语句的布局 753
31.6 注释的布局 763
31.7 子例程的布局 766
31.8 类的布局 768
第32章 自带文档说明的代码 777
32.1 内部文档 777
32.2 编程风格也是一种文档 778
32.3 注释,加还是不加,这是个问题 781
32.4 有效注释的关键 785
32.5 加注释的技术 792
32.6 IEEE标准 813
第33章 个性 819
33.1 个性和软件构建主题有关系吗 820
33.2 精明和谦逊 821
33.3 好奇心 822
33.4 睿智的真诚 826
33.5 交流与合作 828
33.6 创造性和规范性 829
33.7 懒有懒的道理 830
33.8 性格其实没有太大关系 830
33.9 习惯 833
第34章 软件匠艺的话题 837
34.1 征服复杂性 837
34.2 选择适合自己的流程 839
34.3 写程序的时候,首先考虑到人,
其次才考虑机器 841
34.4 写程序的时候,思维优先,不要受限于语言 843
34.5 专注于编程约定的帮助文档 844
34.6 以问题域来考虑编程 845
34.7 注意落石 848
34.8 迭代、重复,反复练习 850
34.9 软件与信仰,各自心生欢喜 851
第35章 更多信息来源 855
35.1 与软件构建相关的信息 856
35.2 软件构建之外的话题 857
35.3 期刊 859
35.4 软件开发人员的阅读计划 860
35.5 加入专业组织 862
第1 章 欢迎来到软件构建的世界 3
第2 章 有助于更充分理解软件开发的隐喻 9
第3 章 谋定而后动:前期准备 23
第4 章 关键的“构建”决策 61
第II 部分 创建高质量的代码
第5 章 软件构建中的设计 73
第6 章 可以工作的类 125
第7 章 高质量的例程 161
第8 章 防御性编程 187
第9 章 伪代码编程过程 215
第III 部分 变量
第10 章 变量中使用的一般性难题 237
第11 章 变量名的力量 259
第12 章 基本数据类型 291
第13 章 不常用的数据类型 319
第IV 部分 语句
第14 章 直线性代码的组织 347
第15 章 条件语句的使用 355
第16 章 控制循环 367
第17 章 不太常见的控制结构 391
第18 章 表驱动的方法 411
第19 章 常见的控制难题 431
第V 部分 代码改进
第20 章 软件质量的全景观 463
第21 章 协同构建代码 479
第22 章 开发人员和测试 499
第23 章 调试 535
第24 章 重构 563
第25 章 代码调优策略 587
第26 章 代码调优技术 609
第VI 部分 系统级考量
第27 章 程序规模对构建的影响 649
第28 章 对软件构建进行管理 661
第29 章 集成 689
第30 章 编程工具 709
第VII 部分 软件匠艺
第31 章 布局和风格 729
第32 章 自带文档说明的代码 777
第33 章 个性 819
第34 章 软件工艺的话题 837
第35 章 更多信息来源 855
参考文献 863
索引 883
详细目录
第I 部分 奠 定 基 础
第1章 欢迎来到软件构建的世界 3
1.1 什么是软件构建? 3
1.2 软件构建的重要性 6
1.3 如何阅读本书 8
第2章 有助于更充分理解软件开发的隐喻 9
2.1 隐喻的重要性 9
2.2 如何使用软件隐喻 11
2.3 常见的软件隐喻 13
第3章 谋定而后动,前期准备 23
3.1 先决条件的重要性 24
3.2 确定要开发什么类型的软件 31
3.3 定义问题的先决条件 36
3.4 需求的先决条件 38
3.5 架构的先决条件 43
3.6 花在事前先决条件上的时间 55
第4章 关键的构建决策 61
4.1 编程语言的选择 61
4.2 编程约定 66
4.3 评估自己在技术浪潮中的位置 66
4.4 选择主流的构建实践 69
第II 部分 创建高质量的代码
第5章 软件构建中的设计 73
5.1 设计挑战 74
5.2 关键的设计概念 77
5.3 设计构建块:启发式 87
5.4 设计实践 110
5.5 点评各种流行的方法论 118
第6章 可以工作的类 125
6.1 类的基础知识 126
6.2 何为好的类的接口 133
6.3 设计和实现有哪些难题 143
6.4 创建类的理由 152
6.5 特定于语言的难题 156
6.6 超越类:软件包 156
第7章 高质量的例程 161
7.1 基于合理缘由来创建例程 164
7.2 在例程层级的设计 168
7.3 何为好的例程名称 171
7.4 一个例程多长为好? 173
7.5 如何使用例程的参数 174
7.6 使用函数时候的特殊考量 181
7.7 宏例程和内联例程 182
第8章 防御性编程 187
8.1 防止程序接收无效输入 188
8.2 断言 189
8.3 错误处理技术 194
8.4 异常 198
8.5 隔离程序,免受误操作所造成的损害 203
8.6 调试帮助 205
8.7 决定产品代码中保留多少防御性编程 209
8.8 关于防御性编程,要慎重 210
第9章 伪代码编程过程 215
9.1 总结构建类和例程的步骤 216
9.2 Pro伪代码 218
9.3 使用PPP构建例程 220
9.4 PPP的备选方案 232
第III 部分 变 量
第10章 变量使用中的一般性难题 237
10.1 数据的含义 238
10.2 让变量声明变得简单一些 239
10.3 初始化变量指导方针 240
10.4 范围 244
10.5 持久化 251
10.6 绑定时间 252
10.7 数据类型和控制结构的关系 254
10.8 变量名称要精准体现其用途 255
第11章 变量名的力量 259
11.1 选择好名称时的注意事项 259
11.2 特定数据类型的命名 264
11.3 命名约定的力量 270
11.4 非正式化命名约定 272
11.5 标准化前缀 279
11.6 名称要言简意赅 282
11.7 要避免哪些类型的名称 285
第12章 基础数据类型 291
12.1 数字 292
12.2 整数 293
12.3 浮点数 295
12.4 字符和字符串 297
12.5 布尔变量 301
12.6 枚举类型 303
12.7 命名常量 307
12.8 数组 310
12.9 创建自己的类型(类型别名) 311
第13章 不常用的数据类型 319
13.1 结构 319
13.2 指针 323
13.3 全局数据 335
第IV 部分 语 句
第14章 直线性代码的组织 347
14.1 必须按特定顺序组织的语句 347
14.2 顺序无所谓的语句 351
第15章 条件语句的使用 355
15.1 if语句 355
15.2 case语句 361
第16章 控制循环 367
16.1 如何选择循环的类型 367
16.2 对循环进行控制 373
16.3 轻松创建循环—由内而外 385
16.4 循环和数组之间的相关性 387
第17章 不太常见的控制结构 391
17.1 子例程的多种返回路径 391
17.2 递归 393
17.3 goto语句 398
17.4 如何看待不同寻常的控制结构 408
第18章 表驱动的方法 411
18.1 常见考量 411
18.2 直接方案表 413
18.3 索引访问表 425
18.4 单步访问表 426
18.5 其他的表查找范例 429
第19章 常见的控制难题 431
19.1 布尔表达式 431
19.2 复合语句(块) 443
19.3 Null语句 444
19.4 搞定危险的深度嵌套 445
19.5 编程基础:结构化编程 454
19.6 控制结构与复杂性 456
第V 部分 代码改进
第20章 软件质量的全景观 463
20.1 软件质量具备哪些特征 463
20.2 软件质量改进技巧 466
20.3 质量技术的相对有效性 469
20.4 质量保障何时做 473
20.5 软件质量的一般性原则 474
第21章 协作构建代码 479
21.1 协作开发实践概览 480
21.2 结对编程 483
21.3 正式检查 485
21.4 其他类型的协作开发实践 492
第22章 开发人员和测试 499
22.1 开发人员的测试角色 500
22.2 建议开发人员如何做测试 503
22.3 测试技巧汇总 505
22.4 典型错误 517
22.5 支持测试的工具 523
22.6 如何改进测试 528
22.7 保留测试记录 529
第23章 调试 535
23.1 调试难题概览 535
23.2 发现缺陷 540
23.3 修复缺陷 550
23.4 调试过程中的心理学考量 554
23.5 调试工具:明显的和不太明显的 556
第24章 重构 563
24.1 软件演进的几种类型 564
24.2 重构介绍 565
24.3 特定类型的重构 571
24.4 以安全的方式重构 579
24.5 重构策略 582
第25章 代码调优策略 587
25.1 性能概览 588
25.2 代码调优简介 591
25.3 蜜糖和哥斯拉 597
25.4 度量 603
25.5 迭代 605
25.6 总结代码调优的几种方式 606
第26章 代码调优技术 609
26.1 逻辑 610
26.2 循环 616
26.3 数据转换 624
26.4 表达式 630
26.5 子例程 639
26.6 用低级别的语言重写代码 640
26.7 变动越大,越要大部分一致 643
第VI 部分 系统级考量
第27章 程序规模对代码构建的影响 649
27.1 通信和大小 650
27.2 项目大小的范围 651
27.3 项目大小对错误的影响 651
27.4 项目大小对生产力的影响 653
27.5 项目大小对开发活动的影响 654
第28章 对软件构建进行管理 661
28.1 鼓励写好代码 662
28.2 配置管理 664
28.3 对构建日程表进行评估 671
28.4 度量 677
28.5 以人为本,程序员首先是人 680
28.6 向上管理 686
第29章 集成 689
29.1 集成方法的重要性不可小觑 689
29.2 集成的频率,按阶段还是按增量? 691
29.3 增量集成策略 694
29.4 每日构建和冒烟测试 702
第30章 编程工具 709
30.1 设计工具 710
30.2 源代码工具 710
30.3 可执行代码工具 716
30.4 面向工具的编程环境 720
30.5 自己构建编程工具 721
30.6 工具魔境 722
第VII 部分 软件匠艺
第31章 布局和风格 729
31.1 布局基础 730
31.2 布局 736
31.3 布局风格 738
31.4 控制结构的布局 745
31.5 单条语句的布局 753
31.6 注释的布局 763
31.7 子例程的布局 766
31.8 类的布局 768
第32章 自带文档说明的代码 777
32.1 内部文档 777
32.2 编程风格也是一种文档 778
32.3 注释,加还是不加,这是个问题 781
32.4 有效注释的关键 785
32.5 加注释的技术 792
32.6 IEEE标准 813
第33章 个性 819
33.1 个性和软件构建主题有关系吗 820
33.2 精明和谦逊 821
33.3 好奇心 822
33.4 睿智的真诚 826
33.5 交流与合作 828
33.6 创造性和规范性 829
33.7 懒有懒的道理 830
33.8 性格其实没有太大关系 830
33.9 习惯 833
第34章 软件匠艺的话题 837
34.1 征服复杂性 837
34.2 选择适合自己的流程 839
34.3 写程序的时候,首先考虑到人,
其次才考虑机器 841
34.4 写程序的时候,思维优先,不要受限于语言 843
34.5 专注于编程约定的帮助文档 844
34.6 以问题域来考虑编程 845
34.7 注意落石 848
34.8 迭代、重复,反复练习 850
34.9 软件与信仰,各自心生欢喜 851
第35章 更多信息来源 855
35.1 与软件构建相关的信息 856
35.2 软件构建之外的话题 857
35.3 期刊 859
35.4 软件开发人员的阅读计划 860
35.5 加入专业组织 862
猜您喜欢