获取下载链接
标签
《软件开发》杂志Jolt大奖 大而全,洞悉软件构建精髓 优而先,兼顾行业实践研究 奠定硬核技术领导力的经典 庸常变身卓越的实用性指导 《代码大全2》是著名科技类作家史蒂夫·麦康奈尔的经典著作,是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟时代潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。本书所论述的技术不仅填补了初级与中高级编程技术之间的空白,而且也为程序员提供了一个有关编程技巧的信息来源。 本书的缘起与使命,响应计算机科学与技术委员会的报告,植根于“软件工程参考手册”这个基本的概念,同时兼顾软件质量和研发效能,对已有的高效软件工程实践进行全面收集、萃取、分类和传播(CSTB 1990, McConnell 1997a)。 这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。无论是什么背景的读者,阅读本书都有助于在更短的时间内、更容易地写出更好、更简洁、更优雅的程序。
第Ⅰ部分奠定基础 第1章 欢迎来到软件构建的世界 003 第2章 通过隐喻更充分地理解软件开发 009 第3章 谋定而后动:前期准备 023 第4章 关键的构建决策 057 第II部分高质量的代码 第5章 软件构建的设计 069 第6章 可以工作的类 121 第7章 高质量的子程序 157 第8章 防御式编程 187 第9章 伪代码编程过程 215 第Ⅲ部分变量 第10章 变量使用中的常规问题 239 第11章 变量名称的威力 263 第12章 基本数据类型 295 第13章 不常见的数据类型 323 第Ⅳ部分语句 第14章 直线型代码的组织 353 第15章 使用条件语句 361 第16章 控制循环 373 第17章 不常见的控制结构 395 第18章 表驱动法 417 第19章 常规控制问题 437 第Ⅴ部分代码改进 第20章 软件质量概述 469 第21章 协同构建 483 第22章 开发人员测试 503 第23章 调试 541 第24章 重构 569 第25章 代码调优策略 591 第26章 代码调优技术 613 第Ⅵ部分系统化考虑 第27章 程序规模对构建的影响 651 第28章 管理构建 663 第29章 集成 693 第30章 编程工具 715 第Ⅶ部分软件匠艺 第31章 代码的布局和风格 733 第32章 自文档代码 781 第33章 个人性格 821 第34章 关于软件匠艺 837 第35章 更多信息来源 853 详细目录 第Ⅰ部分奠定基础 第1章 欢迎来到软件构建的世界 003 1.1什么是软件构建 003 1.2软件构建为何如此重要 006 1.3如何阅读本书 008 第2章 通过隐喻更充分地 理解软件开发 009 2.1隐喻的重要性 009 2.2如何使用软件隐喻 012 2.3常见的软件隐喻 013 第3章 谋定而后动:前期准备 023 3.1前期准备的重要性 024 3.2确定要开发什么类型的软件 030 3.3定义问题的先决条件 034 3.4需求的先决条件 036 3.5架构的先决条件 041 3.6前期准备所花费的时间 052 第4章 关键的构建决策 057 4.1编程语言的选择 057 4.2编程约定 062 4.3判断个人处于技术浪潮中的哪个阶段 062 4.4选择重要的构建实践 065 第II部分高质量的代码 第5章 软件构建的设计 069 5.1设计挑战 070 5.2关键设计概念 073 5.3设计构建基块:启发式方法 083 5.4设计实践 107 5.5点评各种流行的方法论 115 第6章 可以工作的类 121 6.1类的基础:抽象数据类型(ADT) 122 6.2良好的类接口 129 6.3设计和实现问题 139 6.4创建类的理由 149 6.5语言特定问题 153 6.6超越类:包 153 第7章 高质量的子程序 157 7.1创建子程序的正当理由 160 7.2子程序级别的设计 165 7.3好的子程序名称 169 7.4一个子程序应该有多长 171 7.5如何使用子程序参数 173 7.6函数使用中的特别注意事项 180 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对防御式编程采取防御的姿态 211 第9章 伪代码编程过程 215 9.1类和子程序构建步骤总结 215 9.2面向专家的伪代码 218 9.3使用PPP构建子程序 220 9.4PPP的替代方案 233 第Ⅲ部分变量 第10章 变量使用中的常规问题 239 10.1数据扫盲 240 10.2简化变量声明 241 10.3变量初始化指南 242 10.4作用域 247 10.5持久性 254 10.6绑定时间 255 10.7数据类型和控制结构之间的关系 257 10.8每个变量只有一个用途 258 第11章 变量名称的威力 263 11.1选择好名称的注意事项 263 11.2特定数据类型的命名 269 11.3命名规范的威力 275 11.4非正式的命名规范 276 11.5前缀的标准化 283 11.6创建可读的短名称 286 11.7变量名称避坑指南 289 第12章 基本数据类型 295 12.1一般的数字 296 12.2整型 297 12.3浮点型 299 12.4字符和字符串 302 12.5布尔变量 305 12.6枚举类型 307 12.7具名常量 312 12.8数组 314 12.9创建自定义类型(类型别名) 316 第13章 不常见的数据类型 323 13.1结构体 323 13.2指针 327 13.3全局数据 340 第Ⅳ部分语句 第14章 直线型代码的组织 353 14.1顺序攸关的语句 353 14.2顺序无关的语句 356 第15章 使用条件语句 361 15.1if语句 361 15.2case语句 367 第16章 控制循环 373 16.1选择循环类型 373 16.2控制循环 379 16.3轻松创建循环:由内而外 391 16.4循环和数组的对应关系 393 第17章 不常见的控制结构 395 17.1子程序中的多个返回点 395 17.2递归 397 17.3goto语句 402 17.4众说纷纭,谈谈不常见的控制结构 413 第18章 表驱动法 417 18.1表驱动法使用总则 417 18.2直接访问表 419 18.3索引访问表 431 18.4阶梯访问表 433 18.5表查询的其他示例 436 第19章 常规控制问题 437 19.1布尔表达式 437 19.2复合语句(语句块) 448 19.3空语句 449 19.4驾驭深层嵌套 451 19.5编程基础:结构化编程 460 19.6控制结构与复杂度 462 第Ⅴ部分代码改进 第20章 软件质量概述 469 20.1软件质量的特性 469 20.2改进软件质量的技术 472 20.3质量保证技术的相对效能 475 20.4何时进行质量保证 479 20.5软件质量的普遍原理 479 第21章 协同构建 483 21.1协同开发实践概述 484 21.2结对编程 487 21.3正式审查 489 21.4其他类型的协同开发实践 496 第22章 开发人员测试 503 22.1开发者测试 对软件质量所起的作用 504 22.2开发人员测试的推荐方法 507 22.3一些测试技巧 509 22.4典型错误 522 22.5测试支持工具 528 22.6改进测试 534 22.7维护测试记录 535 第23章 调试 541 23.1调试问题概述 541 23.2发现缺陷 546 23.3修复缺陷 557 23.4调试中的心理因素 560 23.5那些显而易见和 不太明显的调试工具 563 第24章 重构 569 24.1软件演变的类型 570 24.2重构简介 571 24.3特定的重构 577 24.4安全重构 585 24.5重构策略 587 第25章 代码调优策略 591 25.1性能概述 592 25.2代码调优简介 595 25.3各式各样的臃肿和蜜糖 601 25.4度量 607 25.5迭代 608 25.6代码调优方法总结 609 第26章 代码调优技术 613 26.1逻辑 614 26.2循环 619 26.3数据变换 628 26.4表达式 633 26.5子程序 642 26.6用低级语言重新编码 643 26.7改得越多,越不会有大的改观 646 第Ⅵ部分系统化考虑 第27章 程序规模对构建的影响 651 27.1沟通和规模 651 27.2项目规模的范围 652 27.3项目规模对错误的影响 653 27.4项目规模对生产力的影响 655 27.5项目规模对开发活动的影响 656 第28章 管理构建 663 28.1鼓励良好的编码实践 664 28.2配置管理 666 28.3评估构建进度表 673 28.4度量 679 28.5以人为本,善待每一位程序员 683 28.6向上管理 689 第29章 集成 693 29.1集成方法的重要性 693 29.2集成的频率,阶段式还是增量式 695 29.3增量式集成策略 698 29.4每日构建和冒烟测试 707 第30章 编程工具 715 30.1设计工具 716 30.2源代码工具 716 30.3可执行码工具 721 30.4面向工具的环境 726 30.5自己动手写编程工具 726 30.6工具的幻境 728 第Ⅶ部分软件匠艺 第31章 代码的布局和风格 733 31.1基本理论 734 31.2布局技术 741 31.3布局风格 743 31.4控制结构的布局 750 31.5单条语句的布局 757 31.6注释的布局 768 31.7子程序的布局 771 31.8类的布局 772 第32章 自文档代码 781 32.1外部文档 781 32.2编程风格即文档 782 32.3注释,还是不注释 785 32.4高效注释的关键 788 32.5注释的技术 795 32.6IEEE标准 815 第33章 个人性格 821 33.1个人性格与本书主题有关 822 33.2聪明与谦卑 823 33.3好奇心 824 33.4理性诚实 827 33.5沟通与合作 830 33.6创造力与规范 830 33.7懒惰 831 33.8没有想象中那么重要的性格因素 832 33.9习惯 833 第34章 关于软件匠艺 837 34.1征服复杂性 837 34.2优选开发过程 839 34.3编写程序时,先考虑人, 再考虑机器 840 34.4深入语言去编程, 而不是用语言来编程 842 34.5借助于规范来保持专注 843 34.6面向问题域编程 844 34.7 当心落石 846 34.8迭代,迭代,迭代, 重要的事情说三遍 848 34.9警惕编程中的执念 849 试验 851 第35章 更多信息来源 853 35.1与软件构建相关的信息 853 35.2软件构建之外的话题 854 35.3出版物 856 35.4软件开发者的阅读计划 857 35.5加入专业组织 859 参考文献 861
《真名实姓:弗诺·文奇的科幻世界与现代计算机网络的发展》
这是一部影响横跨一个时代的科幻经典,附带九位重量级人物的深度解读,讲述硬科幻大师弗诺·文奇与互联网界顶尖人物之间的跨界对话。1981年首次出版时便入围雨果奖和星云奖,成为科幻圈与科技界之间的桥梁,揭示了从互联网的萌芽到《神经漫游者》所引发的变革全貌。刘慈欣高度评价这部著作,认为它是对计算机技术所带来...
查看详情 →《从零开始做运营》
运营是什么?怎样做运营?产品和运营是什么关系?我是否适合从事互联网运营?为什么我做的运营活动收效甚微? 在互联网大热的今天,互联网运营成为一个越来越重要的岗位,事关网站、产品的发展与存亡。很多年轻人带着对互联网的热情投身到这个行业,却发现自己对这个行业所知甚少,对互联网运营更加陌生,甚至有一些有志于...
查看详情 →《天才与算法:人脑与AI的数学思维》
★这是兼具美英两国科学院院士称号的马库斯·杜·索托伊先生的杰出之作。 ★我们将进入一个由算法主导的时代,人工智能将在互联网、绘画、音乐与写作等领域全面挑战人类的创造力与想象力。 ★作者通过数学思维解读算法,帮助人们理解创造力的本质,推动人类与机器共存的美好未来成为可能。
查看详情 →《哥德尔、艾舍尔、巴赫》
集异璧-GEB,是数学家哥德尔、版画家艾舍尔、音乐家巴赫三个名字的前缀。《哥德尔、艾舍尔、巴赫书:集异璧之大成》是在英语世界中有极高评价的科普著作,曾获得普利策非小说奖。它通过对哥德尔的数理逻辑,艾舍尔的版画和巴赫的音乐三者的综合阐述,引人入胜地介绍了数理逻辑 学、可计算理 论、人工智能学、语言学、...
查看详情 →