作者简介 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。 20GHz CPU,推荐26 GHz CPU。 512MB内存,推荐1GB内存。 8 GB 硬盘安装空间,推荐20GB硬盘空间。 CDROM 或 DVDROM驱动器。 微软或兼容鼠标。 配套网站 本书在网上设立了一个站点提供示例代码的下载。代码按照章节来组织,可以从以下地址下载: http://wwwmicrosoftcom/learning/en/us/books/12792aspx。 其他在线资源 本书的补充资料和更新将发布在Microsoft Press Online Developer Tools Web站点上。它包含了对本书内容的更新、专栏文章、配套内容、勘误、样章等等。站点的地址是:http://wwwmicrosoftcom /learning/books/online/developer。这个站点会定期更新。 本书的支持 我们尽力确保本书内容的准确性。微软出版社在以下地址提供关于图书的勘误: http://wwwmicrosoftcom/mspress/support/searchaspx。 如果要直接联系微软的帮助和支持,可以在下列网址中输入你的问题: http://supportmicrosoftcom。 如果你有关于本书的评论、问题或建议,或着在知识库里找不到你问题的答案,请按照以下方式联络微软出版社: 电子邮件: mspinput@microsoftcom 通信地址: Microsoft Press Attn: Solid Code editor One Microsoft Way Redmond, WA 98052-6399 请注意:以上联系方式并不提供产品支持。如果你需要支持信息,请访问微软产品支持站点: http://supportmicrosoftcom。 致谢 牛顿说过,“如果我看得比别人远,那是因为我站在了巨人的肩膀上。”这句名言正适用于这本书,特别是考虑到其中所引述的实践、观点和经验的时候。更进一步地说,那些肩膀属于很多为这个项目做出贡献的人。虽然我们的名字占据封面,但是我们要感谢每一个帮助这本书出版的人。我们要感谢他们在这个项目里做出的贡献和支持,并且希望能一一向他们表示谢意。 首先,如果没有微软出版社的同仁就没有这本书的出版。这里我们要感谢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的信息请访问wwwwintellectcom。 Wintellect公司的John Robbins和Jeffrey Richter都为本书提供了无价的建议和及时的反馈。在此特别感谢! Donis Marshall我已经写过好几本书了。但是这是第一本合著的书。在完成本书以后我有一个感想,为什么过去我不找一个人来合著呢?John Bruno对这个项目来说是无比重要的人物。他广博的知识和深刻的洞察力足以让任何关心Windows的技术人员都不能错过本书。John还具备一个作家少见的可贵品质——遵守时间。 John Bruno写书是一件劳心劳力的事情,经常会影响到你最亲近的人。所以,我首先要感谢我的妻子Christa和我的两个儿子,Christopher和 Patrick,感谢你们在我写这本书的过程中给予我的耐心、理解和牺牲。你们的爱和支持让我每天都能保持最好的状态。另外,我还要感谢Donis Marshall邀请我加入这个项目。我感谢他的友善,并让我有机会和他一起参与这样一个重要的工作。在我的生命里,我有幸认识了很多富有创造力和具有聪明才智的人。对于那些总是启发我、鼓励我、挑战我和支持我的人,在这里感谢你们。