搜索


会员资源切换至【手机版】

切换本帖至【手机版】


开启左侧

代码大全(第二版) CODE COMPLETE Second Edition PDF

[复制链接]
发表于 2021-7-29 20:48:52 | 显示全部楼层 |阅读模式

游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0


资源信息:



中文名


: 代码大全(第二版)


英文名


: CODE COMPLETE, Second Edition


版本


: PDF


发行日期


: 2006年03月01日


地区


: 大陆


对白语言


: 普通话


概述


:



【原出版社】 Microsoft Press 【作者】 (美)Steve McConnell 【译者】 金戈 汤凌 陈硕 张菲 【出版社】 电子工业出版社 【书号】 7-121-02298-2 【开本】 16开 【页码】 960 【出版日期】 2006-3-1 【版次】 2-3 基本内容: 代码大全(第二版)是著名IT畅销书作者 Steve McConnell十一年前的经典著作的全新演绎:第二版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论你是什么背景,阅读本书都会让你在更短的时间内、更容易地写出更好的程序。 代码大全是我早在好几年前便已经阅读过的好书。这几年来我不知买过多少书籍,也清理过许多因为书房再也放不下的书籍,但是代码大全这本书始终占据着我书架上重要的位置而不曾移开过,因为好书是经得起时光考验的。 —— Borland公司大中华首席技术官(CTO) 李维 在众多的编程类书籍中,如果只让我挑一本书来阅读,那我一定选择《代码大全》,因为它是最不可或缺的。 —— 《C++ Primer中文版(第三版)》译者 潘爱民 书籍目录: 第1章 欢迎进入软件构建的世界 3 1.1 什么是软件构建 3 1.2 软件构建为何如此重要 6 1.3 如何阅读本书 8 关键点 8 第2章 用隐喻来更充分地理解软件开发 9 2.1 隐喻的重要性 9 2.2 如何使用软件隐喻 11 2.3 常见的软件隐喻 13 软件中的书法:写作代码 13 软件的耕作法:培植系统 14 软件的牡蛎养殖观点:系统生长 15 软件构建:建造软件 16 应用软件技术:智慧工具箱 20 组合各个隐喻 20 更多资源 20 关键点 21 第3章 三思而后行:前期准备 23 3.1 前期准备的重要性 24 前期准备适用于现代软件项目吗 25 准备不周全的诱因 25 关于开始构建之前要做前期准备的绝对有力且简明的论据 27 3.2 辨明你所从事的软件的类型 31 迭代开发法对前期准备的影响 33 在序列式开发法和迭代式开发法之间做出选择 35 3.3 问题定义的先决条件 36 3.4 需求的先决条件 38 为什么要有正式的需求 38 稳定需求的神话 39 在构建期间处理需求变更 40 3.5 架构的先决条件 43 架构的典型组成部分 45 3.6 花费在前期准备上的时间长度 55 更多资源 56 关键点 59 第4章 关键的“构建”决策 61 4.1 选择编程语言 61 语言描述 63 4.2 编程约定 66 4.3 你在技术浪潮中的位置 66 “深入一种语言去编程”的例子 68 4.4 选择主要的构建实践方法 69 关键点 70 第5章 软件构建中的设计 73 5.1 设计中的挑战 74 设计是一个险恶的问题 74 设计是个了无章法的过程(即使它能得出清爽的成果) 75 设计就是确定取舍和调整顺序的过程 76 设计受到诸多限制 76 设计是不确定的 76 设计是一个启发式过程 76 设计是自然而然形成的 76 5.2 关键的设计概念 77 软件的首要技术任务:管理复杂度 77 理想的设计特征 80 设计的层次 82 5.3 设计构造块:启发式方法 87 寻找现实世界中的对象 87 形成一致的抽象 89 封装实现细节 90 当继承能简化设计时就继承 91 隐藏秘密(信息隐藏) 92 找出容易改变的区域 97 保持松散耦合 100 查阅常用的设计模式 103 其他的启发式方法 105 关于设计启发的总结***** 108 使用启发式方法的原则 109 5.4 设计实践 110 迭代 110 分而治之 111 自上而下和自下而上的设计方法 111 建立试验性原型 114 合作设计 115 要做多少设计才够? 115 记录你的设计成果 117 5.5 对流行的设计方法的评论 118 更多资源 119 软件设计,一般性问题 119 软件设计理论 120 设计模式 120 广义的设计 121 标准 122 关键点 122 第6章 可以工作的类 125 6.1 类的基础:抽象数据类型 126 需要用到ADT的例子 126 使用ADT的益处 127 更多的ADT示例 129 在非面向对象环境中用ADT处理多份数据实例 131 ADT和类 133 6.2 良好的类接口 133 好的抽象 133 良好的封装 139 6.3 有关设计和实现的问题 143 包含(“有一个……”的关系) 143 继承(“是一个……”关系) 144 成员函数和数据成员 150 构造函数 151 6.4 创建类的原因 152 应该避免的类 155 总结:创建类的理由 155 与具体编程语言相关的问题 156 6.6 超越类:包 156 更多资源 159 关键点 160 第7章 高质量的子程序 161 7.1 创建子程序的正当理由 164 似乎过于简单而没必要写成子程序的操作 166 总结:创建子程序的理由 167 7.2 在子程序层上设计 168 7.3 好的子程序名字 171 7.4 子程序可以写多长 173 7.5 如何使用子程序参数 174 7.6 使用函数时要特别考虑的问题 181 什么时候使用函数,什么时候使用过程 181 设置函数的返回值 182 7.7 宏子程序和内联子程序 182 宏子程序在使用上的限制 184 内联子程序 184 关键点 186 第8章 防范式编程 187 8.1 保护程序免遭无效输入数据的破坏 188 8.2 断言 189 建立自己的断言机制 191 使用断言的指导建议 191 8.3 错误处理技术 194 健壮性与正确性 197 高层次设计对错误处理方式的影响 197 8.4 异常 198 8.5 隔离程序以免遭由错误造成的损害 203 隔离区与断言的关系 205 8.6 辅助调试代码 205 不要自动地把产品版本的限制强加于开发版本之上 205 尽早引入辅助调试的手段 206 采用冒进式编程 206 计划移除调试辅助代码 206 8.7 确定在产品代码中该保留多少防范式代码 209 8.8 防范式编程时保持防范 210 其他资源 212 关键点 213 第9章 伪代码编程过程 215 9.1 创建类和子程序的步骤概述 216 创建一个类的步骤 216 创建子程序的步骤 217 9.2 伪代码 218 9.3 通过伪代码编程过程创建子程序 220 设计子程序 225 编写子程序 225 检查代码 230 收尾工作 232 根据需要重复上述步骤 232 9.4 伪代码编程过程之外的其他方案 232 关键点 234 第10章 使用变量的一般事项 237 10.1 数据认知 238 数据认知测试 238 有关数据类型的其他资源 239 10.2 轻松掌握变量定义 239 隐式声明 239 10.3 变量初始化原则 240 10.4 作用域 244 使变量引用局部化 245 尽可能缩短变量的“存活”时间 246 减小作用域的一般原则 249 有关缩小变量作用域的说明 250 10.5 持续性 251 10.6 绑定时间 252 10.7 数据类型和控制结构之间的关系 254 10.8 为变量指定单一用途 255 关键点 258 第11章 变量名的力量 259 11.1 选择好变量名的注意事项 259 最重要的命名注意事项 260 以问题为导向 261 最适当的名字长度 262 变量名字的效果范围 262 变量名字中的计算值限定词 263 变量名字中的常用反义词 264 11.2 为特定类型的数据命名 264 为循环索引命名 265 为状态变量命名 266 为临时变量命名 267 为布尔变量命名 268 为枚举类型命名 269 为常量命名 270 11.3 命名规则的力量 270 为什么要有规则? 270 何时采用命名规则 271 正式程度 271 11.4 非正式命名规则 272 语言无关规则的指导原则 272 语言相关规则的指导原则 275 混合语言编程的注意事项 276 命名规则示例 276 11.5 标准前缀 279 用户自定义类型缩写 279 语义前缀 280 标准前缀的优点 281 11.6 创建具备可读性的短名称 282 一般的缩写指导原则 282 语音缩写 282 有关缩写的评论 282 11.7 应该避免的名称 285 关键点 289 第12章 基本数据类型 291 12.1 使用数的普遍规则 292 12.2 整数 293 12.3 浮点数 295 12.4 字符和字符串 297 C中的字符串 299 12.5 布尔变量 301 12.6 枚举类型 303 如果你的语言里没有枚举类型 307 12.7 命名常量 307 12.8 数组 310 12.9 创建你自己的类型(类型别名) 311 为什么创建自己的类型的示例是用Pascal和Ada写的? 314 创建自定义数据类型的指导原则 315 关键点 318 第13章 不常见的数据类型 319 13.1 结构 319 13.2 指针 323 用来理解指针的例子 323 使用指针的一般技巧 325 C++指针 332 C指针 334 13.3 全局数据 335 与全局数据有关的常见问题 335 使用全局数据的理由 338 只有万不得已时才使用全局数据 339 用访问子程序来取代全局数据 339 如何降低使用全局数据的风险 342 其他资源 343 关键点 344 第14章 组织直线型代码 347 14.1 必须有明确顺序的语句 347 14.2 顺序无关的语句 351 使代码易于自上而下的阅读 351 把相关的语句组织在一起 352 关键点 353 第15章 使用条件语句 355 15.1 if语句 355 简单if-then语句 355 if-then-else语句串 358 15.2 case语句 361 为case选择最有效的排序 361 使用case语句的提示 361 关键点 366 第16章 控制循环 367 16.1 选择循环的种类 367 什么时候使用while循环 368 什么时候用带退出的循环 369 何时使用for循环 372 何时使用foreach循环 372 16.2 循环控制 373 进入循环 373 处理好循环体 375 退出循环 377 检查端点 381 使用循环变量 382 循环应该有多长 385 16.3 轻松创建循环——由内而外 385 16.4 循环和数组的关系 387 关键点 389 第17章 不常见的控制结构 391 17.1 子程序中的多个返回 392 17.2 递归 393 递归的例子 394 使用递归的技巧 396 17.3 goto 398 反对goto的论点 398 支持goto的观点 399 关于goto的虚假辩论 400 错误处理和goto 401 goto和在else子句中的共享代码 406 goto使用原则总结 407 17.4 对不常见控制结构的看法 408 其他资源 408 关键点 410 第18章 表驱动方法 411 18.1 表驱动方法使用总则 411 使用表驱动方法的两个问题 412 18.2 直接访问表 413 示例:一个月中的天数(Days-in-Month) 413 示例:保险费率 415 例子:灵活的消息格式(Flexible-Message-Format) 416 构造查询键值 423 18.3 索引表访问(Indexed Access Tables) 425 18.4 阶梯访问表 426 18.5 表查询的其他示例 429 关键点 430 第19章 一般控制问题 431 19.1 布尔表达式 431 用true和false做布尔判断 431 简化复杂的表达式 433 编写肯定形式的布尔表达式 435 用括号使布尔表达式更清晰 437 理解布尔表达式是如何求值的 438 按照数轴的顺序编写数值表达式 440 与0比较的指导原则 441 布尔表达式的常见问题 442 19.2 复合语句(块) 443 19.3 空语句 444 19.4 驯服危险的深层嵌套 445 对减少嵌套层次的技术的总结 453 19.5 编程基础:结构化编程 454 结构化编程的三个组成部分 454 19.6 控制结构与复杂度 456 复杂度的重要性 457 降低复杂度的一般原则 457 其它类型的复杂度 459 关键点 460 第20章 软件质量概述 463 20.1 软件质量的特性 463 20.2 改善软件质量的技术 466 开发过程 467 设置目标 468 20.3 不同质量保障技术的相对效能 469 缺陷检测率 469 找出缺陷的成本 472 修正缺陷的成本 472 20.4 什么时候进行质量保证工作 473 20.5 软件质量的普遍原理 474 推荐读物 476 相关标准 477 关键点 477 第21章 协同构造 479 21.1 协同开发实践概要 480 协同构造是其他质量保证技术的补充 480 协同构造有利于传授公司文化以及编程专业知识 482 集体所有权适用于所有形式的协同构造 482 在构造前后都应保持协作 483 21.2 结对编程 483 成功运用结对编程的关键 483 结对编程的好处 484 21.3 正式检查 485 你期望检查能够带来什么结果 485 检查中的人员角色 486 检查的一般步骤 487 检查中的自尊心 490 检查和代码大全 490 检查总结 491 21.4 其他类型的协同开发实践 492 走查 492 代码阅读 494 大型演示 495 协同构造技术的比较 495 参考资料 496 结对编程 496 检查 496 相关标准 497 关键点 497 第22章 开发者测试 499 22.1 开发者测试在软件质量中的角色 500 构造中测试 502 22.2 推荐的开发者测试方法 503 先测试还是后测试 503 开发者测试的局限性 504 22.3 测试技巧锦囊 505 不完整的测试 505 结构化的基础测试 505 数据流测试 509 等价类划分 512 猜测错误 513 边界值分析 513 几类坏数据 514 几类好数据 515 采用容易手工检查的测试用例 516 22.4 典型错误 517 哪些类包含最多的错误? 517 错误的分类 518 不完善的构造过程引发错误所占的比例 520 你期望能发现多少错误 521 测试本身的错误 522 22.5 测试支持工具 523 为测试各个类构造脚手架 523 Diff工具 524 测试数据生成器 524 覆盖率监视器 526 数据记录器/日志记录器 526 符号调试工具 526 系统乾扰器 527 错误数据库 527 22.6 改善测试过程 528 有计划的测试 528 重新测试(回归测试) 528 自动化测试 528 22.7 保留测试记录 529 个人测试记录 530 推荐读物 530 测试 530 测试脚手架 531 测试优先的开发 531 相关标准 532 关键点 533 第23章 调 试 535 23.1 调试概述 535 调试在软件质量中所扮演的角色 536 调试效率的巨大差异 536 让你有所收获的缺陷 537 一种效率低下的调试方法 539 23.2 寻找缺陷 540 科学的调试方法 540 寻找缺陷的一些小建议 544 语法错误 549 23.3 修正缺陷 550 23.4 调试中的心理因素 554 心理取向如何导致调试时的盲目 554 “心理距离”在调试中的作用 556 23.5 调试工具——明显的和不那么明显的 557 源代码比较工具 556 编译器的警告消息 557 扩展的语法和逻辑检查 557 执行性能分析器 557 测试框架 558 调试器 558 其它资源 561 关键点 562 第24章 重构 563 24.1 软件进化的类型 564 软件进化的哲学 564 24.2 重构简介 565 重构的理由 565 拒绝重构的理由 571 24.3 特定的重构 571 数据级的重构 571 语句级的重构 572 子程序级重构 573 类实现的重构 574 类接口的重构 575 系统级重构 576 24.4 安全的重构 579 不宜重构的情况 582 24.5 重构策略 582 推荐读物 585 关键点 585 第25章 代码调整策略 587 25.1 性能概述 588 质量特性和性能 588 性能和代码调整 588 25.2 代码调整简介 591 Pareto法则 592 一些无稽之谈 593 何时调整代码 596 编译器优化 596 25.3 蜜糖和哥斯拉 597 常见的低效率之源 598 常见操作的相对效率 601 25.4 性能测量 603 性能测量应当精确 604 25.5 反复调整 605 25.6 代码调整方法总结 606 推荐读物 606 算法和数据类型 607 关键点 608 第26章 代码调整方法 609 26.1 逻辑 610 在知道答案后停止判断 610 按照出现频率来调整判断顺序 612 相似逻辑结构之间的性能比较 614 用查找表替代复杂表达式 614 使用惰性求值 615 26.2 循环 616 将判断外提(Unswitching) 616 合并循环 617 unrolling展开 618 尽可能减少再循环内部做的工作 620 哨兵值 621 把最忙的循环放在最内层 623 削减强度 623 26.3 数据变换 624 使用整型数而不是浮点数 625 数组维度尽可能少 625 尽可能减少数组引用 626 使用辅助索引 627 使用缓存机制 628 26.4 表达式 630 利用代数恒等式 630 削弱运算强度 630 编译时初始化 632 小心系统函数 633 使用正确的常量类型 635 预先算出结果 635 删除公共子表达式 638 26.5 子程序 639 将函数重写为内联 639 26.6 用低级语言重写代码 640 26.7 变得越多,事情反而更没变 643 推荐读物 644 关键点 645 第27章 程序规模对“构筑”的影响 649 27.1 交流和规模 650 27.2 项目规模的范围 651 27.3 项目规模对错误的影响 651 27.4 项目规模对生产率的影响 653 27.5 项目规模对开发活动的影响 654 活动比例和项目规模 654 程序、产品、系统和系统产品 656 方法论和规模 657 额外资源 658 关键点 659 第28章 管理“构筑” 649 28.1 鼓励良好的编码实践 661 设定标准的考虑事项 662 鼓励良好的编码实践的技术 662 本书的角色 664 28.2 配置管理 664 什么是配置管理? 664 需求变更和设计变更 666 软件代码变更 667 工具版本 668 机器配置 668 备份计划 669 有关配置管理的额外资源 670 28.3 评估“构筑”进度表 671 评估的方法 671 评估“构筑”的工作量 673 对进度的影响 674 评估与控制 675 如果你落后了该怎么办 675 有关软件评估的额外资源 677 28.4 度量 677 有关软件度量的额外资源 679 28.5 把程序员当人看 680 程序员们怎样花费时间? 681 性能差异与质量差异 681 信仰问题 683 物理环境 684 有关“把程序员当人看”的额外资源 685 28.6 管理你的管理者 686 有关管理构造的额外资源 687 相关标准 687 关键点 688 第29章 集成 689 29.1 集成方式的重要性 689 29.2 集成频率——阶段式集成还是增量集成 691 阶段式集成 691 增量集成 692 增量集成的益处 693 29.3 增量集成的策略 694 自顶向下集成 694 自底向上集成 697 三明治集成 698 风险导向的集成 699 功能导向的集成 700 T-型集成 701 集成方法小结 702 29.4 Daily Build与冒烟测试 702 哪种项目能用daily build过程? 706 持续集成 706 额外资源 707 关键点 708 第30章 编程工具 709 30.1 设计工具 710 30.2 源代码工具 710 编辑 710 分析代码质量 713 重构源代码 714 Version Control 715 数据词典 715 30.3 可执行码工具 716 产生目标码 716 除错 719 测试 719 代码微调 720 30.4 工具导向的环境 720 30.5 打造你自己的编程工具 721 项目特有的工具 721 脚本 722 30.6 工具幻境 722 额外资源 724 关键点 725 第31章 布局与风格 729 31.1 基本原则 730 布局的极端情况 730 格式化的基本原理 732 人和计算机对程序的解读 732 好布局有什么用? 733 把布局作为一种信仰 735 良好布局的目标 735 31.2 布局技术 736 空白区 736 括号 738 31.3 布局风格 738 纯块结构 738 模仿纯块结构 740 使用begin - end对(大括号)指定块边界 742 行尾布局 743 哪种风格最优? 745 31.4 控制结构的布局 745 格式化控制结构块的要点 746 其他考虑 747 31.5 单条语句的布局 753 语句长度 753 用空格使语句显得清楚 753 格式化后续行 754 每行仅写一条语句 758 数据声明的布局 761 31.6 注释的布局 763 31.7 子程序的布局 766 31.8 类的布局 768 类接口的布局 768 类实现的布局 768 文件和程序布局 771 更多资源 774 关键点 775 第32章 自说明代码 777 32.1 外部文档 777 32.2 编程风格作文档 778 32.3 注释或不注释 781 32.4 高效注释之关键 785 注释种类 786 高效注释 788 最佳注释量 792 32.5 注释技术 792 注释单行 792 注释代码段 795 注释数据声明 802 注释控制结构 804 注释子程序 805 注释类、文件和程序 809 32.6 IEEE标准 813 软件质量保证标准 813 更多资源 815 关键点 817 第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 矜持 831 经验 831 编程狂人 832 33.9 习惯 833 更多资源 834 关键点 835 第34章 软件开发艺术的有关问题 837 34.1 克服复杂性 837 34.2 精选编程过程 839 34.3 为人写程序,其次才是为机器 841 34.4 以所用语言编程,但思路不受其约束 843 34.5 借助规范集中注意力 844 34.6 基于问题域编程 845 将程序划分为不同层次的抽象 845 34.7 “当心落石” 848 34.8 反复,再反复 850 34.9 不要顽固不化 851 判断 851 折中主义 851 试验 852 关键点 853 第35章 何处有更多信息 837 35.1 关于软件创建的信息 858 35.2 创建之外的话题 861 综述资料 861 软件工程综览 863 其他注释过的参考书目 864 35.3 期刊 866 初级程序员杂志 866 高级程序员杂志 866 专题出版物 869 35.4 软件开发者的读书计划 870 入门级 870 熟练级 872 精通级 874 35.5 参加专业组织 875 申明:已通过安全检测 杀毒软件: McAfee VirusScan Enterprise 版本: 8.5.0i 病毒库时间:2006-12-19 常驻: DonkeyServer No. 2 开源时间: 24小时在线

主题推广




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

切换至【手机版】| 主站| Archiver|

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

|网站地图

GMT+8, 2026-3-30 02:25 , Processed in 0.803472 second(s), 120 queries .

 

快速回复 返回顶部 返回列表