代码大全(第2版)

代码大全(第2版) pdf epub mobi txt 电子书 下载 2025

[美] Steve,[美] McConnell 著,金戈,汤凌,陈硕,张菲 译
图书标签:
  • 编程
  • 软件工程
  • 代码质量
  • 软件开发
  • 代码规范
  • 最佳实践
  • 软件设计
  • 可维护性
  • 调试
  • 算法
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121022982
版次:2
商品编码:10875285
品牌:Broadview
包装:平装
开本:16开
出版时间:2011-09-01
用纸:胶版纸
页数:944

具体描述

编辑推荐

  

代码构建也兼具艺术性和思想性!

《代码大全(第二版)》经典重塑,2011版,仍然是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节!是著名IT畅销书作者Steve McConnell十一年前的经典著作的全新演绎,该作者是两届Software Development Magzine Jolt Award震撼大奖得主。两届震撼大奖得主,数十年软件开发智慧,十二年前的经典,十二年后再铸辉煌!

内容简介

代码大全(2)是著名Ⅱ畅销书作者、《IEEESoftware》杂志前主编、具有20年编程与项目管理经验的SteveMcConneU十余年前的经典著作的全新演绎:第2版做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论,等等。这是一本百科全书式的软件构建手册,涵盖了软件构建活动的方方面面,尤其强调提高软件质量的种种实践方法。

作者特别注重源代码的可读性,详细讨论了类和函数命名、变量命名、数据类型和控制结构、代码布局等编程的基本要素,也讨论了防御式编程、表驱动法、协同构建、开发者测试、性能优化等有效开发实践,这些都服务于软件的技术使命:管理复杂度。为了培养程序员编写高质量代码的习惯,书中展示了大量高质量代码示例(以及用作对比的低质量代码),提高软件质量是降低开发成本的重要途径。除此之外,本书归纳总结了来自专家的经验、业界研究以及学术成果,列举了大量软件开发领域的真实案例与统计数据,提高本书的说服力。

本书中所论述的技术不仅填补了初级与高级编程实践之间的空白,而且也为程序员们提供了一个有关软件开发技术的信息来源。本书对经验丰富的程序员、技术带头人、自学的程序员及没有太多编程经验的学生都是大有裨益的。可以说,只要您具有一定的编程基础,想成为一名优秀的程序员,阅读本书都不会让您失望。


作者简介

  Steve,Mc Connell,被公认为软件开发社区中的首要作者和发言人之一。他是ConstruxSoftware公司的首席软件工程师。他所编著的图书包括曾被SoftwareDevelopment杂志授予优异产品震撼大奖(JoltAwardforproductexcellence)的《代码大全》(CodeComplete)和《快速软件开发》(RapidDevelopment),以及《软件项目生存指南》(SoftwareProtectSurvivalGuide)和《专业软件开发》(ProfessionalSoftwareDevelopment)等等。

精彩书评

  “《代码大全》第1版在我看来堪称软件工程领域的经典之作——而第2版则更棒!”
  ——Ralph Johnson,伊利诺伊州立大学;《设计模式》(Design Pattems)作者之一

  “无论您是新手还是经验丰富的开发人员, 《代码大全》(第2版)都能教会您思考编程的方法。”
  ——Jeffrey Richter,《Microsoft.NET框架实用编程》(Applied Microsoft.NET Framework Programming)作者

  “这本书是讲述软件构建的指南——准备孤身前往荒岛的程序员只要带上这本书就足够了。”
  ——Diomidis Spinellis,《代码阅读方法与实践》(Code Reading:The Open Source Perspective)作者

  “Steve McConnell是一位既在一线实践,又能把其中奥妙讲明白的少数人之一。”
  ——John Vlissides,IBM研究院;《设计模式》(Design Patterns)作者之一

  ”Steve McConnell比任何人都懂得如何构建软件;我们十分庆幸他能把其所有的深邃见解和实践经验写成这样一本重要而新颖的图书。”
  ——“Visual Basic之父”Alan Cooper,《软件观念革命》(About Face 2.0)作者

目录

前言
鸣谢
核对表目录
表目录
图目录
第1部分 打好基础
第1章 欢迎进入软件构建的世界“
1.1 什么是软件构建
1.2 软件构建为何如此重要
1.3 如何阅读本书

第2章 用隐喻来更充分地理解软件开发
2.1 隐喻的重要性
2.2 如何使用软件隐喻
2.3 常见的软件隐喻

第3章 三思而后行:前期准备
3.1 前期准备的重要性
3.2 辨明你所从事的软件的类型
3.3 问题定义的先决条件
3.4 需求的先决条件
3.5 架构的先决条件
3.6 花费在前期准备上的时间长度

第4章 关键的“构建”决策
4.1 选择编程语言
4.2 编程约定
4.3 你在技术浪潮中的位置
4.4 选择主要的构建实践方法

第5章 软件构建中的设计
5.1 设计中的挑战
5.2 关键的设计概念
5.3 设计构造块:启发式方法
5.4 设计实践
5.5 对流行的设计方法的评论

第6章 可以工作的类
6.1 类的基础:抽象数据类型(ADTs)
6.2 良好的类接口
6.3 有关设计和实现的问题
6.4 创建类的原因
6.5 与具体编程语言相关的问题
6.6 超越类:包

第7章 高质量的子程序
7.1 创建子程序的正当理由
7.2 在子程序层上设计
7.3 好的子程序名字
7.4 子程序可以写多长
7.5 如何使用子程序参数
7.6 使用函数时要特别考虑的问题
7.7 宏子程序和内联子程序

第8章 防御式编程
8.1 保护程序免遭非法输入数据的破坏
8.2 断言
8.3 错误处理技术
8.4 异常
8.5 隔离程序,使之包容由错误造成的损害
8.6 辅助调试的代码
8.7 确定在产品代码中该保留多少防御式代码
8.8 对防御式编程采取防御的姿态

第9章 伪代码编程过程
9.1 创建类和子程序的步骤概述
9.2 伪代码
9.3 通过伪代码编程过程创建子程序
9.4 伪代码编程过程的替代方案

第3部分 变量
第10章 使用变量的一般事项
10.1 数据认知
10.2 轻松掌握变量定义
10.3 变量初始化原则
10.4 作用域
10.5 持续性
10.6 绑定时间
10.7 数据类型和控制结构之问的关系
10.8 为变量指定单一用途

第11章 变量名的力量
11.1 选择好变量名的注意事项
11.2 为特定类型的数据命名
11.3 命名规则的力量
11.4 非正式命名规则
11.5 标准前缀
11.6 创建具备可读性的短名字
11.7 应该避免的名字

第12章 基本数据类型
12.1 数值概论
12.2 整数
12.3 浮点数
12.4 字符和字符串
12.5 布尔变量
12.6 枚举类型
12.7 具名常量
12.8 数组
12.9 创建你自己的类型(类型别名)

第13章 不常见的数据类型
13.1 结构体
……
第4部分 语句
第5部分 代码改善
第6部分 系统考虑
第7部分 软件工艺
参考文献
索引

精彩书摘

  数据纯化论者有时争论说,程序员应该绝不使用全局数据,但是按照“全局数据”这一术语的广义解释,大多数程序都使用了它。存在于数据库中的数据是全局数据,存在于配置文件如Windows注册表中的数据也是。具名常量也是全局数据,只不过不是全局变量罢了。
  如果遵循使用的原则,那么全局变量在一些场合下也是有用的。
  保存全局数值有时候你会有一些在概念上用于整个程序的数据。这可能是一个用于表示程序状态的变量——例如,交互式模式或者命令行模式、正常模式或者错误恢复模式等的模式标识。也可能是在整个程序里面要用到的信息——例如,程序中的每一个子程序都会用到的数据表。
  模拟具名常量尽管C++、Java、Visual Basic和多数现代语言都支持具名常量,但是Python、Perl、Awk以及UNIX shell脚本等语言却不支持。当你的语言不支持具名常量的时候,你可以用全局变量代替它们。例如,你可以用取值分别为1和0的全局变量TRUE和FALSE来代替字面量1和0,或者用LINSES_PER_PAGE=66代表每页行数的66。一旦采用了这种方法,那么日后再修改代码就会更容易了,而且这样的代码会更方便阅读。贯彻这种对全局数据的使用原则是在一种语言上编程(programming in a language)和深入一种语言去编程(programming into a language)之间差异的一个主要示例,第34.4节“深入一门语言去编程,不浮于表面”对此有深入探讨。
  模拟枚举类型你还可以在Python等不直接支持枚举类型的语言里用全局变量来模拟枚举类型。
  简化对极其常用的数据的使用有的时候你会大量地引用一个变量,以致于它几乎出现在你所编写的每一个子程序的参数列表里。与其将它包含在每一个参数列表里面,不如把它设置成全局变量。不过,事实上很少会出现代码到处访问某一个变量的情形。通常该变量是由为数不多的一组子程序来访问的,你可以把这些子程序以及它们所用到的数据整合进一个类里面。下面会就这一问题展开讨论。
  消除流浪数据有的时候你把数据传递给一个子程序或者类,仅仅是因为想要把它传递给另一个子程序或者类。例如,你可能有一个在每个子程序里都使用的错误处理对象。当调用链中间的子程序并不使用这一对象的时候,这一对象就被称为“流浪数据(tramp data)”。使用全局变量可以消除流浪数据。
  Use Global Data Only as a Last Resort
  只有万不得已时才使用全局数据
  在你选择使用全局数据之前,请考虑下面这些替换方案。
  首先把每一个变量设置为局部的,仅当需要时才把变量设置为全局的 开始的时候先把所有的变量设置为单一子程序内部的局部变量。如果你发现还需要在其他位置用到它们,那么在一举把它们转变成全局变量之前,先把它们转变为类里的private或者protected变量。如果你最终发现必须要把它们转变成全局变量,那么就转变它们。不过请先确定除此之外别无选择。如果你一开始就把变量设置为全局的,那么你将永远不可能把它转变成局部的;反之,如果你开始时把变量设置为局部的,那么你可能永远也不需要把它转变成全局的。
  区分全局变量和类变量有些变量由于要被整个程序访问,因此是真正的全局变量。其他只在一组特定的子程序里被频繁使用的实际是类变量。在频繁使用某个类变量的子程序组里,你可以采用任何希望的方式来访问它。如果类外部的子程序需要使用该变量,那么就用访问器子程序来提供对该变量的访问。不要直接访问类变量——好像它们是全局变量一样——即便你的编程语言允许你这么做。这一建议等价于高呼:“模块化!模块化!模块化!”
  使用访问器子程序创建访问器子程序是避免产生与全局数据相关问题的主要方法。下一节会对此做更多的讨论。
  ……

前言/序言


穿越历史的迷雾:一部关于古代文明与失落知识的探寻之旅 《星河遗迹:失落文明的密码》并非一本关于编程或软件开发的著作,它带领读者潜入人类历史深邃的迷雾之中,揭示那些随着时光流逝而湮灭的辉煌文明,以及它们留下的令人费解的印记。这本书是一次跨越数千年的史诗级探险,作者凭借严谨的学术态度和引人入胜的叙事风格,深入挖掘那些被尘封的传说、被遗忘的文字,以及散落在世界各地的古老遗迹,试图解读失落文明在科学、哲学、艺术和宇宙观上的独特贡献,以及它们为何最终走向衰落的深层原因。 本书的开篇,我们将目光投向尼罗河畔,探寻古埃及那些令人惊叹的建筑奇迹。作者并非仅仅罗列金字塔的高度或方尖碑的重量,而是着重于分析古埃及人在没有现代工具的情况下,如何运用其卓越的工程学知识和对天文学的深刻理解,建造出宏伟壮丽的陵墓和神庙。书中会详细阐述他们复杂的测量技术、石块切割与搬运的巧妙方法,以及其中蕴含的几何学原理。更令人着迷的是,作者将引导读者思考,古埃及人对生死轮回的哲学观念,以及他们如何将这种观念融入到建筑设计和宗教仪式之中,构建出一个连接现世与彼岸的宏大精神体系。从象形文字的解读,到纸莎草文献的破译,本书将呈现古埃及人在天文学、数学、医学、甚至早期的化学领域所取得的令人瞩目成就,为我们勾勒出一个远超我们想象的古老文明的智慧轮廓。 随后,我们的旅程将转移到美索不达米亚平原,那里曾孕育出苏美尔、巴比伦等古老帝国。本书将深入探讨楔形文字的起源与演变,揭示其作为最早的文字系统之一,如何记录了古代社会的法律、经济、宗教和文学。读者将有机会了解《汉谟拉比法典》的精妙之处,以及它在法律史上的里程碑意义。此外,本书还会重点介绍美索不达米亚文明在天文学方面的卓越贡献,例如他们对行星运行的精确观测,以及由此发展出的复杂历法系统。作者将试图解释,为什么生活在两河流域的古人,会对星空如此着迷,以及他们从中解读出了怎样的宇宙秩序。书中还会提及一些鲜为人知的考古发现,它们可能暗示了美索不达米亚文明在数学、工程甚至早期的冶金技术方面,也达到了相当的高度,只是许多知识已随着时间的洪流而消逝。 本书的篇章将继续向东延伸,抵达神秘的印度次大陆。在这里,我们将探寻印度河谷文明的辉煌,这座拥有发达城市规划、先进排水系统和统一度量衡的古老文明,其文字至今仍是未解之谜。作者将基于已有的考古证据,推测这个高度组织化的社会是如何运作的,以及其独特的文化特征。接着,本书将深入探讨古印度哲学与宗教的起源,从吠陀文献到奥义书,我们将跟随作者的脚步,理解印度教、佛教等深刻影响世界的哲学思想是如何萌芽和发展的。书中还将介绍古印度在数学领域的突破性进展,例如“零”的概念、十进制计数法以及代数学的早期萌芽,这些贡献对世界文明的发展产生了深远的影响。同时,古印度在医学(如阿育吠陀)和天文学方面的研究,也将被详细剖析,揭示其丰富的知识体系。 本书的目光并未止步于此,它还将带我们走进遥远的古希腊。我们并非简单回顾柏拉图、亚里士多德的哲学思想,而是深入探讨古希腊人在几何学、物理学、天文学、医学等各个领域所奠定的西方科学基础。从欧几里得的《几何原本》到阿基米德的杠杆原理,再到托勒密的宇宙模型,本书将以清晰的逻辑梳理这些伟大的发现是如何一步步推动人类对自然世界的认知。作者还会探讨古希腊人对民主、理性、逻辑的追求,以及这些思想如何塑造了西方文明的基因。书中将尝试解释,古希腊的城邦制度、对外交流以及对知识的渴求,是如何共同孕育了这样一个智慧的摇篮。 而当我们将目光投向美洲大陆,则会遇到玛雅文明那令人惊叹的 astronomica 精度和复杂的文字系统。本书将深入分析玛雅文明在数学(包括使用“零”的概念)、天文学(能够精确预测日食和月食)以及历法(拥有极其复杂且精确的历法系统)方面的成就。读者将有机会一窥玛雅人所创造的令人难以置信的象形文字,以及考古学家们在破译这些文字方面所付出的艰辛努力。书中还将探讨玛雅文明独特的城市规划、建筑风格以及其宗教信仰体系,并尝试解读他们文明最终衰落的可能原因。 《星河遗迹:失落文明的密码》不仅仅是一部关于历史的叙述,更是一次对人类智慧极限的探索。作者通过对不同文明的深入比较和分析,试图找到隐藏在这些失落文明背后的普遍规律,以及它们共同面临的挑战。本书将引导读者思考:是什么力量促使这些伟大的文明崛起?它们在科学、哲学和艺术上的独特创造,又为我们留下了怎样的启示?而当它们走向衰落时,又给我们敲响了怎样的警钟? 本书还可能触及一些更加神秘和引人入胜的领域,例如一些至今仍未完全解释的古代遗址,如英国的巨石阵、南美的纳斯卡线条,以及那些流传在世界各地的古老神话和传说。作者将以批判性的眼光,审视这些现象,并尝试从历史、考古、人类学和天文学等多个角度,给出合乎逻辑的解释,同时也不排除对其中一些未知领域保持适度的开放性。 最终,《星河遗迹:失落文明的密码》旨在唤醒读者对人类历史的深邃敬畏,以及对未知世界的好奇心。它提醒我们,在现代文明的璀璨光芒之下,曾经存在过无数同样令人赞叹的智慧火花。通过对这些失落文明的探寻,我们不仅能更深刻地理解人类文明的演进轨迹,更能从中汲取宝贵的经验与教训,以更加清醒的头脑,去面对我们当下的挑战,并为人类文明的未来,留下更加坚实的基石。本书将是一场令人难忘的心灵之旅,一次对人类集体记忆的深刻反思,以及一次对永恒智慧的追寻。

用户评价

评分

这本书简直是软件开发领域的圣经!我抱着学习的态度翻开它,结果却完全被内容深深吸引。从最基础的编码规范到复杂的系统设计,作者都给出了详尽的解释和生动的案例。我尤其喜欢其中关于“为什么”的讨论,很多时候我们只是在模仿别人的代码,却不理解背后的原理,而《代码大全》恰恰弥补了这一点。它不仅仅是告诉我们“怎么做”,更重要的是教会我们“为什么要这么做”。书中提供的各种编程范式和设计模式,让我在面对实际项目时,能够更加从容地选择最优方案。以前觉得自己的代码写得还不错,读完这本书才知道,原来还有这么多可以改进的地方。那些关于代码可读性、可维护性的建议,虽然看似简单,但真正实践起来,却能极大地提升开发效率和团队协作的顺畅度。而且,书中对不同语言和平台的比较分析,也让我开阔了视野,不再局限于自己熟悉的领域。总而言之,这是一本值得反复阅读、从中汲取养分的宝藏,每一个软件工程师都应该拥有。

评分

作为一名在IT行业摸爬滚打多年的老兵,我阅书无数,但像《代码大全(第2版)》这样能够引起我深度共鸣并提供如此多宝贵见解的书籍,真的不多见。它没有那些浮夸的宣传,没有那些花哨的技巧,而是以一种朴实无华的风格,深入浅出地阐述了软件开发的核心理念和实践经验。书中关于“项目管理”和“团队协作”的章节,让我回想起了很多过往项目中的得失,也给了我很多新的启示。它让我意识到,一个成功的软件项目,绝不仅仅是代码的堆砌,更需要良好的组织、有效的沟通和精心的规划。特别是关于“沟通”的重要性,书中给出的建议,让我深刻反思了自己在团队合作中可能存在的不足。此外,书中对于“性能优化”的分析,也让我耳目一新。它不仅仅是给出了一些性能调优的技巧,更重要的是,它教会了我如何从宏观的角度去审视代码的性能,以及如何在设计阶段就考虑到性能问题。这本书让我觉得,自己过去的经验得到了印证,同时也学到了许多全新的、极具价值的知识。

评分

坦白讲,我是一个有些“实用主义”的开发者,更倾向于快速解决问题,而不是纠结于那些“高深莫测”的理论。所以,一开始我对《代码大全(第2版)》这类“大部头”的书籍是有些抗拒的。但我的同事强烈推荐,我才硬着头皮翻了翻。结果,我被它深深地吸引住了。它以一种非常接地气的方式,讲解了很多我以前从未深入思考过的问题。比如,关于“重构”的技巧,它不是简单地告诉你“要重构”,而是详细地列举了各种重构的场景和方法,并配以清晰的代码示例,让我一看就懂,并且跃跃欲试。还有关于“调试”的艺术,书中给出的方法和思路,让我在面对复杂Bug时,不再感到束手无策。它教会我如何更有条理、更有效地找出问题的根源,而不是盲目地尝试。这本书让我意识到,解决问题不仅仅是技术问题,更是一种思维方式。它帮助我建立了一种更严谨、更系统的问题解决框架,这对我日常的工作起到了巨大的帮助。

评分

我必须说,当我收到《代码大全(第2版)》的时候,我并没有抱有多大的期望,毕竟市面上关于编程的书籍实在太多了,很多都流于表面,缺乏深度。但这本书完全颠覆了我的认知。它不是一本简单的“食谱”,告诉你如何一步步完成某个任务,而是更像一位经验丰富的导师,用一种非常系统和深入的方式,带你领略软件开发的艺术。书中关于如何构建高质量代码的论述,让我受益匪浅。我以前总是觉得写出能跑的代码就可以了,但这本书让我明白,真正的“好代码”应该具备可读性、可维护性、高效性和可扩展性。它提出的很多原则,比如“ KISS 原则”(Keep It Simple, Stupid)和“ DRY 原则”(Don't Repeat Yourself),虽然听起来很耳熟,但书中的阐述和例子,让我对这些原则有了更深刻的理解,也让我认识到在实际开发中,如何更有效地去践行它们。我特别喜欢书中关于“代码的演化”这一章节,它让我意识到,代码不是一成不变的,而是一个不断生长和优化的过程,理解这一点对于长期维护和迭代项目至关重要。

评分

我最近一直在思考如何提升自己的编程能力,希望不仅仅停留在“码农”的层面,而是能成为一名真正意义上的“软件工程师”。《代码大全(第2版)》的出现,无疑是给我指明了方向。它让我看到了软件开发中更广阔的天地,以及我自身还有多少提升的空间。书中对于“设计模式”的讲解,尤其令我印象深刻。我以前对设计模式的理解非常有限,常常是知道有这么回事,却不知道如何运用,或者滥用。但这本书系统地梳理了各种常见的设计模式,并详细解释了它们的应用场景和优缺点,让我对设计模式有了全新的认识。它不仅仅是提供了“工具”,更重要的是教会了我“如何思考”,如何用更优雅、更高效的方式来组织和设计代码。我还发现,书中对于“测试”的强调,也让我受益匪浅。以前我总觉得写测试是一件费时费力的事情,但读完这本书,我才明白,高质量的测试是保证代码质量、降低维护成本的关键。

评分

为什么评价需要10个字

评分

大一学生,成功转专业到计算机学院,准备苦读。

评分

不错的书,通俗易懂!

评分

好书非常厚还没看完需要时间去理解思考不错值得

评分

快递速度很快,用起来很不错

评分

质量挺好的,趁着打折买了很多书,要看好长时间了……

评分

书籍还不错了,可以从里面学点东西了,说到了一切的数字重点,编码。

评分

2、如果是快递过程中的原因,我希望你们可以对图书更温柔一些,无论是加包装还是其他,书籍是人类进步的阶梯,谢谢

评分

很好,是正版,值得购买,书香四溢,美味美味,以后买书都在京东了,谢谢

相关图书

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

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有