首页>参考读物>计算机科学与技术>综合

完美代码
作者 : (美)Donis Marshall  John Bruno 著 徐旭铭 译
译者 : 徐旭铭
出版日期 : 2010-01-15
ISBN : 978-7-111-29240-1
定价 : 45.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 243
开本 : 16
原书名 : Solid Code: Optimizing the Software Development Life Cycle
原出版社: Microsoft Corporation
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书简单明了地介绍了软件开发中的最佳实践,展示了工程流程在编写优质代码上的重要性以及测试的重要性,总结了很多资深工程师的经验教训,并提供了很多真实案例。书中介绍的经验可以应用到产品开发周期的每个环节,从设计到开发以及最后的发布和维护。本书的中心思想就是要在设计和实现的过程中改进代码质量,包括类建模、性能、安全性、内存使用以及调试,帮助读者构建完美的项目。本书适合专业及业余程序员阅读。

图书特色

完美代码
优化软件开发生命周期
(美)Donis Marshall
John Bruno 著
徐旭铭 译

采用一流的工程实践来帮助你编写更健壮、无错的代码。两位微软的.NET开发专家与你分享优化软件开发生命周期的真实案例和经过实战考验的解决方案——从避免代价昂贵的编程陷阱,到提高开发团队整体效率的方法等。无论你是来自哪个层次的托管代码程序员,都能在这里找到设计、原型开发、实现、调试以及测试的技巧,进一步提升代码的品质。
本书涉及开发流程中每一个阶段的优化(从设计到测试),以及如何开发出更优质的应用程序软件:
通过元编程来降低代码的复杂度,同时还能增加灵活性和可维护性。
把性能当做一项功能,并且在开发周期中对它进行管理。
为应用程序的伸缩性采取各种最佳实践。
通过预防性的安全措施来抵御各种恶意攻击。
在运行之前通过防御性编程来捕捉错误。
在每日工程流程里植入自动化构建、代码分析和测试等工作。
实现更好的源码控制管理和提交流程。
建立一套质量驱动、基于里程碑的项目节奏,并最终产生更好的结果。

作者简介
Donis Marshall 是Debuglive.com的CEO,他管理的专家软件工程师团队开发出第一个基于Web的Windows应用程序调试器。凭借20年的开发经验以及深厚的微软.NET背景,他编写了好几本书,其中包括《Programming Microsoft Visual C# 2008: The Language and .NET Security Programming》。Donis还是一名培训师和咨询师,专门讲授并主持关于.NET编程、调试、安全性以及设计和架构的研讨会。
John Bruno 是微软的资深程序经理,有着超过10年的应用开发经验,他擅长使用微软.NET技术来设计并构建可扩展的Web应用和服务。加入微软以来,John对Windows Live的发布起到重要作用,同时他还负责Windows Live Spaces的服务架构和程序员平台,Windows Live Spaces目前在全世界的用户数超过了1亿。现在他的主要精力都放在了开发Windows Mobile下一代Web服务上。

图书前言

在过去多年里软件开发已经有了很大的演化。编程语言和快速开发工具(比如NET和 Visual Studio 2008)的进步让软件工业可以构建更高质量的软件,速度更快,成本更低,更新更频繁。尽管这种对软件和工具以及过程演化的需求日益增加,但构建和发布高质量的软件对于软件项目的所有参与者,特别是程序员来说,仍然是一项艰难的工作。幸运的是,本书包含了应用程序工程师在开发健壮的代码中所需要的工程实践、过程、策略和技术等一切最佳要素。
  本书探讨了软件开发中几乎每一个方面所需的最佳实践,以达到更高的代码质量。这本书提供了来自资深工程师的实践经验,可以应用到产品开发周期里的每一个环节:设计,构造原型,实现,调试,测试。这些宝贵的资料和建议还进一步得到了来自真实世界实例的支持,这些来自微软内部的工程团队包括了(但不限于)Windows Live Hotmail和Live Search团队。
本书的读者
  本书适合软件开发里每一个环节的参与者阅读。特别是那些在构建高质量软件方面寻求最佳实践和建议的应用程序工程师。书中很多部分都展示了工程流程在编写优质代码上的重要性。其他部分则着重于测试的重要性。本书的中心思想就是要在设计和实现的过程中改进代码质量,包括类建模、性能、安全性、内存使用以及调试。
  专业和业余程序员都可以阅读本书。我们假设读者对编程概念和C#面向对象编程具有基本的理解,而水平则没有要求。本书主要是关于托管代码应用程序开发的最佳实践,书里所探讨的话题应该能引起各级托管代码程序员的共鸣。
本书的组织
  本书的组织形式和应用程序开发生命周期非常相似。各个章并不是分割成很多部分,而是根据四个关键的原则组织在一起。第1章里列出了这些原则:专注设计、防御和调试,分析与测试,以及改进流程和态度。
  专注设计本书最重要的主题之一就是:经过深思熟虑的设计是提升产品整体质量的重要途径。为了支持这一主题,我们将探讨很多不同的实践,例如类设计和原型开发、元编程、性能、伸缩性以及安全性等话题。
   防御和调试出色的设计是构建高质量软件应用的关键,但是理解那些会阻碍发布无错代码的陷阱的重要性也同样不能忽视。根据这一原则,我们要讨论的话题包括内存管理、防御性编程技术以及调试。
   分析与测试即使最伟大的程序员遵循了所有推荐的最佳实践,他仍然会写出有bug的代码。因此,讨论如何进行代码分析以及测试的方法是进一步提升代码质量的重要环节。
   改进流程和态度除了最佳实践以外,工程的流程和文化也能对产品的质量产生巨大的影响。我们探讨了提升团队的效率以及追求质量几个重要话题。
系统要求
  至少要有以下的软件和硬件环境才能在32位Windows环境下编译执行本书中的示例代码:
   Windows Vista,Windows Server 2003 with Service Pack 1,Windows Server 2008,或者Windows XP with Service Pack 2。
   Visual Studio 2008 Team System。
   20GHz CPU,推荐26 GHz CPU。
   512MB内存,推荐1GB内存。
   8 GB 硬盘安装空间,推荐20GB硬盘空间。
   CDROM 或 DVDROM驱动器。
   微软或兼容鼠标。
配套网站
  本书在网上设立了一个站点提供示例代码的下载。代码按照章节来组织,可以从以下地址下载:
  http://wwwmicrosoftcom/learning/en/us/books/12792aspx。
其他在线资源
  本书的补充资料和更新将发布在Microsoft Press Online Developer Tools Web站点上。它包含了对本书内容的更新、专栏文章、配套内容、勘误、样章等等。站点的地址是:http://wwwmicrosoftcom /learning/books/online/developer。这个站点会定期更新。
本书的支持
  我们尽力确保本书内容的准确性。微软出版社在以下地址提供关于图书的勘误:
  http://wwwmicrosoftcom/mspress/support/searchaspx。
  如果要直接联系微软的帮助和支持,可以在下列网址中输入你的问题:
  http://supportmicrosoftcom。
  如果你有关于本书的评论、问题或建议,或着在知识库里找不到你问题的答案,请按照以下方式联络微软出版社:
  电子邮件:
  mspinput@microsoftcom
  通信地址:
  Microsoft Press
  Attn: Solid Code editor
  One Microsoft Way
  Redmond, WA 98052-6399
  请注意:以上联系方式并不提供产品支持。如果你需要支持信息,请访问微软产品支持站点:
  http://supportmicrosoftcom。
致谢
  牛顿说过,“如果我看得比别人远,那是因为我站在了巨人的肩膀上。”这句名言正适用于这本书,特别是考虑到其中所引述的实践、观点和经验的时候。更进一步地说,那些肩膀属于很多为这个项目做出贡献的人。虽然我们的名字占据封面,但是我们要感谢每一个帮助这本书出版的人。我们要感谢他们在这个项目里做出的贡献和支持,并且希望能一一向他们表示谢意。
  首先,如果没有微软出版社的同仁就没有这本书的出版。这里我们要感谢Ben Ryan、Devon Musgrave和Melissa von Tschudi-Sutton,他们保证了本书的高质量和项目的按期进行。另外,我们还要感谢技术编辑Per Blomqvist和审稿Cindy Gierhart所做出的贡献和反馈。
  前面提到过,本书包含了大量的实践、观点和经验。如果没有来自微软和行业里专家们的贡献、支持和反馈,这些元素是不可能出现在书中的。这里我们要特别感谢为此做出贡献的人和帮助我们审校的人:Jason Blankman,Eric Bush,Jacob Kim,Don Reamey,Dick Craddock,Andres Juarez Melendez,Eric Schurman,Jim Pierson,Richard Turner,Venkatesh Gopalakrishnan,Simon Perkins,Chuck Bassett,Venkat Iyer,Ryan Farber和Ajay Jha。
  还要感谢Wintellect公司。Wintellect是一个咨询、调试和培训公司,专门帮助其他公司专注在NET和Windows开发环境上构建更好的软件。它的服务包括短期的NET进阶培训课程,以及开发和咨询服务,包括紧急调试。公司还主持了Devscovery研讨会——一个3天的多路会议,专门面向中级和高级程序员。更多的关于Wintellect的信息请访问wwwwintellectcom。
  Wintellect公司的John Robbins和Jeffrey Richter都为本书提供了无价的建议和及时的反馈。在此特别感谢!
  Donis Marshall我已经写过好几本书了。但是这是第一本合著的书。在完成本书以后我有一个感想,为什么过去我不找一个人来合著呢?John Bruno对这个项目来说是无比重要的人物。他广博的知识和深刻的洞察力足以让任何关心Windows的技术人员都不能错过本书。John还具备一个作家少见的可贵品质——遵守时间。
  John Bruno写书是一件劳心劳力的事情,经常会影响到你最亲近的人。所以,我首先要感谢我的妻子Christa和我的两个儿子,Christopher和 Patrick,感谢你们在我写这本书的过程中给予我的耐心、理解和牺牲。你们的爱和支持让我每天都能保持最好的状态。另外,我还要感谢Donis Marshall邀请我加入这个项目。我感谢他的友善,并让我有机会和他一起参与这样一个重要的工作。在我的生命里,我有幸认识了很多富有创造力和具有聪明才智的人。对于那些总是启发我、鼓励我、挑战我和支持我的人,在这里感谢你们。

封底文字

采用一流的工程实践来帮助你编写更健壮、无错的代码。两位微软的.NET开发专家与你分享优化软件开发生命周期的真实案例和经过实战考验的解决方案——从避免代价昂贵的编程陷阱,到提高开发团队整体效率的方法等。无论你是来自哪个层次的托管代码程序员,都能在这里找到设计、原型开发、实现、调试以及测试的技巧,进一步提升代码的品质。

本书涉及开发流程中每一个阶段的优化(从设计到测试),以及如何开发出更优质的应用程序软件:
● 通过元编程来降低代码的复杂度,同时还能增加灵活性和可维护性。
● 把性能当做一项功能,并且在开发周期中对它进行管理。
● 为应用程序的伸缩性采取各种最佳实践。
● 通过预防性的安全措施来抵御各种恶意攻击。
● 在运行之前通过防御性编程来捕捉错误。
● 在每日工程流程里植入自动化构建、代码分析和测试等工作。
● 实现更好的源码控制管理和提交流程。
● 建立一套质量驱动、基于里程碑的项目节奏,并最终产生更好的结果!
作者简介
Donis Marshall是Debuglive.com的CEO,他管理的专家软件工程师团队开发出第一个基于Web的Windows应用程序调试器。凭借20年的开发经验以及深厚的微软.NET背景,他编写了好几本书,其中包括《Programming Microsoft Visual C# 2008: The Language and .NET Security Programming》。Donis还是一名培训师和咨询师,专门讲授并主持关于.NET编程、调试、安全性以及设计和架构的研讨会。

John Bruno是微软的资深程序经理,有着超过10年的应用开发经验,他擅长使用微软.NET技术来设计并构建可扩展的Web应用和服务。加入微软以来,John对Windows Live的发布起到重要作用,同时他还负责Windows Live Spaces的服务架构和程序员平台,Windows Live Spaces目前在全世界的用户数超过了1亿。现在他的主要精力都放在了开发Windows Mobile下一代Web服务上。

作者简介

(美)Donis Marshall  John Bruno 著 徐旭铭 译:暂无简介

译者简介

徐旭铭:暂无简介

图书目录

专家推荐

前言
第1章敏捷世界里的代码质量
11软件开发的传统方法
12软件开发的敏捷方法
121Scrum
122eXtreme Programming
123测试驱动开发
13尽早进行质量控制
14微软内幕:Windows Live Hotmail工程
141工程准则
142成功的关键因素
15编写坚实代码的方法
151专注设计
152防御和调试
153分析与测试
154改进流程和态度
16总结
17本章要点
第2章类设计和原型开发
21Visual Studio中的协作
22磨刀不误砍柴工
23软件建模
231统一建模语言
232Visio示例
24原型开发
25跟踪
26Visual Studio类设计器
261创建一个类图
262使用类设计器进行原型开发
263原型开发示例
27总结
28本章要点
第3章元编程
31什么是元数据
32托管应用里的元数据
33应用程序中的元数据
34微软内幕:Windows Live Spaces中的配置管理
35总结
36本章要点
第4章性能也是功能
41常见的性能难点
411网络延时
412负载大小和网络往返时延
413受限的TCP连接
414未优化的代码
42分析应用程序性能
43提升Web应用性能的技巧
431减小负载大小
432有效利用缓存
433优化网络通信
434为性能组织编写代码
44采用性能最佳实践
45微软内幕:解决Live Search的性能问题
451Web性能准则
452成功的关键要素
46总结
47本章要点
第5章伸缩性设计
51理解应用程序伸缩性
511伸缩性之路
512数据库的伸缩性
52伸缩Web应用程序的技巧
521选择可伸缩的应用程序设计
522设计可伸缩的应用程序基础设施
523抵御应用程序故障
524保证可管理性和可维护性
53微软内幕:管理Windows Live Messenger服务基础设施
54总结
55本章要点
第6章安全性设计和实现
61常见的应用程序安全威胁
62设计安全的应用程序的原则
63安全的应用程序的SD3+C策略和实践
631设计上的安全性
632默认值的安全性
633部署和通信中的安全性
64理解NET框架的安全性原则
641运行时安全策略
642代码访问安全
643应用运行时安全策略
65其他安全性最佳实践
66总结
67本章要点
第7章托管内存模型
71托管堆
72垃圾回收
721原生对象的托管包裹
722GC类
723大型对象堆
73终止
731不确定的垃圾回收
732可丢弃对象
733丢弃模式
734弱引用
74固定
75托管堆的技巧
76CLR Profiler
77总结
78本章要点
第8章防御式编程
81防御式编程和C#
82警告
83代码检查
84软件测试
841测试驱动开发
842代码覆盖
843自我描述的代码
844命名规则
845伪代码
846注释
85用类实现防御式编程
851修饰符
852接口
86防御式编程小结
87设计模式
88总结
89本章要点
第9章调试
91溢出bug
92Pentium FDIV bug
93符号
931符号服务器
932源码服务器
94抢先式调试
95主动型调试
951托管调试助手
952MDA举例
953代码分析
954性能监视
96调试
97调试工具
971Visual Studio
972NET框架工具
973Windows调试工具
974CLRProfiler
975Sysinternals
98跟踪
981Web应用程序跟踪
982异常处理
99生产调试
910总结
911本章要点
第10章代码分析
101投资测试过程
1011定义测试的节奏
1012建立测试工作项的跟踪
102采用自动化的代码分析
1021使用静态代码分析工具
1022编写应用程序测试代码
1023使用Visual Studio进行测试
103通过度量来理解质量
1031衡量代码的复杂度和可维护性
1032通过透视来理解质量
104微软内幕:Microsoftcom的Web分析平台的质量管理
1041代码质量的重要性
1042测试投资
1043管理质量
105总结
106本章要点
第11章改进工程流程
111工程流程改进的技巧
1111建立起关注质量的项目节奏
1112实现源码控制和提交流程
1113每日发布和测试代码
1114自动化每日构建
1115使用MSBuild
1116创建并执行质量指标
112总结
113本章要点
第12章态度决定一切
121激情
122线性还是迭代
123销售为王
124灵活性
125解决实际问题
126你要负责
127把移植代码当做新代码来写
128重构
129优先级
1210从实际出发
1211拥抱变化
1212拓展视野
附录A敏捷开发资源
附录BWeb性能资源

教学资源推荐
作者: [美]马克 N.霍伦斯坦(Mark N. Horenstein)著
作者: [美] 帕特里克 R. 肖蒙(Patrick R. Schaumont)著
参考读物推荐
作者: 阿里集团 阿里云智能事业群 云原生应用平台 著
作者: [美]艾丽西亚·吉布 (Alicia Gibb) 等著
作者: Ian Sommerville, Pete Sawyer
作者: [美] 刘永川(Alex Liu) 著