首页>参考读物>计算机科学与技术>软件与程序设计

.NET最佳实践
作者 : (美)Stephen Ritchie 著
译者 : 黄灯桥 黄浩宇 李永 译
丛书名 : 华章程序员书库
出版日期 : 2014-01-06
ISBN : 978-7-111-44912-6
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 295
开本 : 16
原书名 : Pro .NET Best Practices
原出版社: Springer-Verlag
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书涵盖广泛的、开发专家认可的实践和原则,指导读者通过正确的方法来开发软件,包括持续集成、自动化测试、自动化部署和代码分析等关键点。 本书讲解了当每次代码更改时,如何获得一个可以运行和执行构建的持续集成服务器,如何编写更清晰、更可维护的自动化测试代码,并给出了使你的.Net项目成功的专家级建议。同时,本书也给出了学习和遵循.Net最佳实践的方法和技巧,使读者避开陷阱,避免犯同样的错误。

图书特色

本书是.NET领域的集大成之作,作者在自己20余年的软件开发基础上,总结出大量被业界认为好用且高效的最佳实践,涉及.NET开发的各种标准、技术和规范。在技术层面之外,本书还从团队和组织心理学的角度讲述了如何切实有效地将这些最佳实践应用到个人、小组、组织和行业中,从而有效地帮助目标读者提高生产力。

通过本书,可以学习到:
创建易于编写、易于维护以及侧重于确保被测试代码按预期工作的自动测试。
为所有目标环境编写通用的自动部署脚本。
执行有意义的代码分析,以便提供行之有效的信息。
充分利用C#语言的强大功能,如扩展方法、泛型和LINQ。
通过辨识和消除偏见、突出差距和展示价值,为遵循最佳实践获得所有项目利益相关者的支持。
……
本书涵盖能为你或团队带来新的不同实践所需的知识、可行的建议和经验,同时有助于避免犯同样的错误。

作者简介






Stephen Ritchie 资深.NET专家,从事软件开发工作超过20年,经验十分丰富。他热衷于对行业最佳实践的研究,近乎狂热,目前担任Excella咨询公司.NET方面的最佳实践专家,多年来与.NET项目团队一起工作,总结出了大量最佳实践,同时也使得这些最佳实践在组织内得以遵循。

技术审校
Paul Apostolescu 微软认证解决方案专家,在计算机和软件安全行业有10余年工作经验,他设计的产品涵盖内核级安全、企业安全、持续监控应用等各个方面。


.NET领域公认经典著作,由拥有20余年开发经验的资深.NET专家撰写,国内.NET领域的知名专家翻译,译著双馨
总结了大量.NET开发人员认为好用且高效的最佳实践,针对性地阐明了如何恰当地在个人、小组、组织和行业中应用这些最佳实践,为个人和开发团队提高开发效率提供绝佳指导

图书前言

本书是专为软件开发人员编写的一本书,主要目的是希望把新的和不同的.NET实践引入开发团队或组织。“最佳实践”用来描述被广泛使用的实践和普遍接受的标准再适合不过了,它们都是不同组织中大量.NET开发人员认为是好用且高效的实践。不过,最佳实践并不适用于所有情况,因而,本书鼓励读者根据自己的情况去理清哪些实践是适用于自己的工作的,哪些是不适用的。
  本书的核心是采用新的和不同的实践,因而,要考虑最佳实践所涉及的四个层面:
   个人:读者本人或任何个人采用更好的实践来提高个人和行业的生产力、质量、全面性和整体效能。
   小组:团队采用更好的实践更好地相互协作,避免出错,达到预期效果,改善团队内部人际关系,并更有效地与其他团队合作。
   组织:公司、机构或企业采用更好的实践将为组织带来更多积极的成果,吸引并留住员工,满足最终用户的期望并使利益相关者满意。
   行业:更好的实践被广泛采用,并成为普遍认可的标准、模式和原则,从而让软件开发有了基准,并使使用者获益。
  在理想的情况下,最佳实践能迅速应用到这四个层面。不过,这不太现实,本书的前几章会讨论其中的大部分原因。实用主义者都知道在当前环境下,不可能控制所有这四个层面,只能影响到其中几个。因此,他们只会在管理范围内和能影响的领域内实行。在阅读本书的过程中,希望读者能在自己可控区域内采用更好的实践,在可影响区域使其发挥积极效用。
  本书是一本最佳实践方面的实用参考书,这些实践可以即刻应用到现有的.NET项目上。读者可以从中学习到实用且有益的标准、技术及惯例(约定),以助于达到预期目标。本书涵盖了许多实践和原则,其中涉及的主要工具和技术包括:
   自动测试
   生成自动化
   持续集成
   代码分析
  作为热身,可以先阅读附录B中.NET最佳实践的示例“记分卡”。如果花点时间为当前项目打分,或许能从结果中找出症结所在。衷心希望能在完成记分卡后,思考以下几个问题:
   什么是你一看到就想使用的最佳实践?为什么它对你如此重要?你是否预测到其中的干扰因素和实施障碍?
   在记分卡上,你、你的团队或你的组织首先关注的实践是什么?你优先考虑的是能提高效率的实践还是有助于防止问题的实践?
   你将如何修改记分卡,以使其完全适用于当前情况?将哪些实践添加到列表?将哪些实践删除?
   一旦记分卡调整到适用于你的情形后,你是否会经常进行重新评估?每年评估一次是否太少?每周评估一次是否太频繁而导致士气低落?
  采用最佳实践是由相关目标及一些进度跟踪方法来带动的举措。要根据自身情况定制适用的记分卡,还要定期跟踪和使用整体评分作为衡量和持续改进的指标。
  如果我找到1万种不可行的方法,我也没有失败。我不会气馁,因为每一次错误的尝试都是又一次前进的步伐。
  —托马斯·爱迪生
  生活中的复杂问题,需要迭代的解决方案。爱迪生知道,耐心和毅力是一个发明家的竞争优势,同样也是实实在在的最佳实践。采取迭代和增量的方式使用新的不同实践是最好的方式。这需要耐心与坚持,乐在其中吧。
本书面向的读者
  任何愿意在软件开发中运用更好的实践的人。
开发人员
  作为一名开发人员,个人的实践已经让你成为一名高效的软件开发人员。那么,是否有新的和不同的实践可以让你变得更高效呢?本书将提供切实可行的、真正有帮助的最佳实践。前面的章节将重点介绍最佳实践的好处、现实意义和目的。后面的章节将专注于技巧、工具和能带来更高效率的技术。最后一章将探讨偏见和排斥心理所带来的负面影响,以及如何克服这些障碍,以便运用最佳实践。
团队领导
  作为一名团队领导,可以根据当前实践了解一下团队开发软件的状况。而新的不同的实践是否能让团队表现得更好,取得更好的成果呢?本书将为你提供务实的建议让项目成员跟进和实施适用的最佳实践。你还将学习到如何让利益相关者了解最佳实践,克服对它的偏见,突出当前结果与预期结果之间的差距,以及展示采用最佳实践的价值所在,从而全力支持运用最佳实践。
本书结构
  本书将采用平滑的方式来讲述各个主题,并对一些关键实践进行较为深入的讲述。例如,第11章,会从静态分析和动态分析这两方面入手,逐步深入到FxCop和StyleCop。这样做的目的是为了涵盖所有主题,在探讨广泛使用的工具和技术与合理的章节数量之间取得平衡。
  第1~5章重点介绍新的和不同实践的背景知识。由于采用最佳实践需要发挥主观能动性,因而,了解组织在目前的情况下哪些实践需要优先实现,哪些地方存在更好的实践,非常重要。
   第1章讲述如何为个人、团队或组织选择新的和不同的更好的实践。
   第2章讲述了在.NET领域和通常的软件开发下发现更好的实践的方法,以便于大家发现、学习和应用更好的实践。
   第3章提供了一些针对团队成员之间实现相互协作,朝着一个共同的目标前进的切实可行的建议。
   第4章介绍了有助于量化采用更好的开发实践的价值的具体实践方法。
   第5章提供了一些实践方法让你专注于战略运用以及战略对当前实践的影响。
  第6~9章则专注于开发人员个人的实践。这些章节将探讨需要遵守的准则和约定、有效的方法,以及一些值得了解的窍门和技巧。整个重点就是让每一个开发人员为了团队的成功而成为一个高效的开发人员。
   第6章将推广的宣言、原则、方法和步骤整理为.NET规章制度,从而为高效、有创造性的开发提供支持。
   第7章将通过非常规的方式来重新审视C#语言的强大,既包括如何利用C#语言的长处,还将讲解“高效开发”是.NET实践的关键。
   第8章介绍许多具体的实践方法以改进测试代码,使自动测试符合高效开发的原则。
   第9章介绍如何生成自动化,以便消除容易出错的步骤,从而达到可复用性与一致性,并改善生成和部署流程。
  第10~12章的重点在于介绍支持工具、产品和技术。这些章节将讲述不同工具包的用途,还给出了一些值得评估的应用程序和产品的建议。
   第10章介绍了持续集成生命周期及描述了每个过程中所涉及的步骤。通过高效的持续集成实践,可让项目节省时间,提高团队效能,并及早发现问题。
   第11章简单介绍了许多静态和动态工具、技术和方法,并重点概述了如何改进它们以提供持续化、自动化的监控。
   第12章综合介绍了商业的及开源的替代品的全面测试框架和工具。
  第13章讲述了许多个人、团队或组织在采用更好的实践时所存在的反感和偏见。你可能需要面对有人不愿意接受或承认新的不同的实践可能会更好的情形;还有可能要与持有新的不同的实践会削弱当前实践的主张做抗争。许多人都习惯抗拒改变,哪怕改变是更好的。本章将帮助你了解反感和偏见是如何影响做出改变的,以便能识别它们,应对它们,并最终管理它们。
  附录A提供了按话题分类的资源列表。其中许多资源都在本书中多次引用,是进一步学习的不错资源。不管怎样,一旦决定涉足.NET实践领域,这个附录就是一扇通往该领域详尽知识的大门。
  附录B提供了一个记分卡,用来评估和跟踪最佳实践。正如前面所讲到的,记分卡是持续主动进行.NET开发更好实践的起点。
本书要求
  使用本书示例,需要符合以下条件:
   熟悉.NET Framework 4.0和C#语言。
   微软Visual Studio 2010。许多示例使用了Visual Studio 2010专业版、白金版或旗舰版的功能。部分示例代码可以在Visual Studio 2010 Express版运行。
   许多示例使用了微软SQL Server Express版,也可以使用其他版本。部分示例使用了MVC Music Store教程所带的数据库,这可从mvcmusicstore.codeplex.com上下载。
   NUnit 2.5.10或更高版本,可从nunit.org下载。
   Moq 4.0.0或更高版本,可从code.google.com/p/moq下载。
   FxCop 10.0或更高版本。我为此写了一篇博文,讲解怎样从Microsoft Windows SDK for Windows 7和.NET Framework 4中提取FxCop 10.0的安装程序。一旦有了FxCopSetup.exe文件,就可在开发机器上安装和建立服务器。具体可访问http://ruthlesslyhelpful.net/2011/06/09/liberate-fxcop-10-0/。
   StyleCop 4.5.25或更高版本,可从stylecop.codeplex.com下载。
  本书还演示和讲述了许多其他工具和技术。在讲述这些特定应用程序的时候也提供了获取它们的方式。
源代码下载
  本书的所有源代码都可以通过下载获得。源代码只是用来演示书中的实践,并不是产品代码。在www.apress.com搜索《Pro .NET Best Practices》,进入它的详细信息页面即可下载本书的源代码。在本书的详细信息页面有一个示例代码的链接,它是一个压缩的ZIP文件,可以使用7-ZIP(7-zip.org)或WinZip进行解压。欲了解更多详细信息,可访问http://www.apress.com/source-code/。
致谢
  我要感谢我的家人Robin、Dianna、Jessica、Devin和Wyatt。他们一直非常支持和鼓励我写这本书。我要感谢我的父母,感谢他们为培养我和支持我所做的一切。
  我要感谢Apress团队,感谢他们所做的所有出色工作。我要感谢Jonathan Hassell,我的组稿编辑,帮助我开始本书的写作,并不断激励我。感谢你,Matthew Moodie,本书的策划编辑,感谢你的指导和支持。感谢你,Annie Beck,本书的流程编辑,感谢你努力工作并保持整个项目向前推进。感谢你,文字编辑,Elizabeth Berry,是你提高了文字的质量和可读性。感谢使这本书出版的所有其他幕后工作人员。我要特别感谢本书技术编辑Paul Apostolescu,他的洞察力和有效的技术审查非常值得赞赏。
  感谢Excella咨询公司的同事们对我的帮助和支持。通过我与Excella卓越中心的工作以及作为公司.NET最佳实践主管,我知道,这些顾问和开发人员非常优秀。我很感激通过我们共同的努力、分享和持续合作所学会的并将继续学习的一切东西。
  我要感谢那些教导过我的开发人员、博主、作家和导师,以及与我交流的其他开发人员。他们的经验和专业知识对整个.NET社区来说是一种宝贵的资源。许多专业开发人员,像我一样,从你们的努力中获益良多。谢谢!
联系作者
  可以通过以下方式联系作者Stephen:
   Excella咨询公司网站:www.excella.com
   电子邮件:stephen.ritchie@excella.com
   LinkedIn:www.linkedin.com/in/sritchie
   博客:ruthlesslyhelpful.net

封底文字

本书是.NET领域的集大成之作,作者在自己将20余年的开发基础上,总结出了大量被业界认为是好用且高效的最佳实践,涉及.NET开发的各种标准、技术和规范。在技术层面之外,本书还从团队和组织心理学的角度讲述了如何切实有效地将这些最佳实践应用到个人、小组、组织和行业中,从而有效地帮助目标读者提高生产力。

通过本书,可以学习到:
• 创建易于编写、易于维护以及侧重于确保被测试代码按预期工作的自动测试。
• 为所有目标环境编写通用的自动部署脚本。
• 执行有意义的代码分析,以便提供行之有效的信息。
• 充分利用C#语言的强大功能,如扩展方法、泛型和LINQ。
• 通过辨识和消除偏见、突出差距和展示价值,为遵循最佳实践获得所有项目利益相关者的支持。
……
本书涵盖能为你或你的团队带来新的和不同的实践所需的知识、可行的建议和经验,同时有助于避免犯同样的错误。

作者简介

(美)Stephen Ritchie 著:暂无简介

译者简介

黄灯桥 黄浩宇 李永 译:暂无简介

译者序

我从事软件开发也有10多年了,一直在努力提高自己的技术水平,可惜的是,技术水平提高了,但还是存在各种各样反复出现的开发问题,这是什么原因造成的呢?我一直在思考与探索。最先考虑的是设计问题,在设计中,也确实存在各种各样的问题,尤其是在设计不细的时候,所造成的问题更是致命的。虽然后来的项目设计做细了,但问题依然存在,这是为什么呢?
  随着极限编程引入到国内,我开始意识到,开发过程也是导致项目失败的重要原因。但是,在国内这样的开发环境下,有多少公司会采用这样的方式呢?而且程序员是否接受这样的方式呢?是否有另外更务实的方式呢?
  很荣幸得到机械工业出版社华章分社的信任,能参与本书的翻译工作。在此次翻译过程中,我终于找到了另一种方式来解决开发中的一些问题。在开发过程中,不可避免地要面对担任各种工作职能和角色的人,而人往往会受到主观因素的影响,而这会直接影响到开发。例如,很多公司没有测试人员,都靠开发人员自身去做测试,开发人员出于自信、自尊,所做的测试肯定是有限的,因而往往会在产品发布后才发现问题。而这应该怎么解决呢?本书提供了很多很好的建议。
  还有就是对于新技术的应用,虽然大家都知道,采用新技术可以提高效率,但是当真正要将其应用到新项目时,往往会认为使用新技术肯定存在未知风险,而且要学的东西很多,未必就比使用旧技术更有效,因而一次次地失去采用新技术的机会,从而止步不前。我也算是一个走在时代前端的人了,有新技术肯定会首先去学习和了解,但当真的要将新技术应用到项目的时候,往往会打退堂鼓。不过,正如书中所说的,只要使用新技术做一个演示,往往会有效地消除心魔。例如,我在MVC出现之前一直使用Web窗体来创建网站,一直不敢尝试使用MVC,后来有一个项目,先用MVC做了一个演示,试了一下,发现开发效率比使用熟悉的Web窗体实在高太多,等项目完成就已经对MVC技术相当娴熟了。因而发现,心魔才是自己的最大敌人。
  本书除了技术层面的东西,更多的是关注人的心理层面,把心魔克服了,技术上的问题自然不会太大,关键还是要认同和接受这些技术。因此,本书确实是一本难得的介绍有关.NET开发方法的经典好书。很感谢作者把这么好的东西与大家分享,也很感谢机械工业出版社能把本书引进到国内。

黄灯桥

图书目录

译者序
前 言
第1章 冷静待之 1
1.1  实践选择 3
1.1.1  可行性 3
1.1.2  认可度 5
1.1.3  价值 6
1.1.4  原型 6
1.2  关注需要改善的目标领域 7
1.2.1  产品交付 8
1.2.2  软件质量 9
1.2.3  团队关系 10
1.3  整体改善 11
1.3.1  均衡 11
1.3.2  面貌一新 12
1.3.3  可持续性 12
1.4  小结 13
第2章 .NET实践领域 15
2.1  从内部挖掘 17
2.1.1  技术债 17
2.1.2  缺陷跟踪系统 18
2.1.3  反思分析 19
2.1.4  前瞻性分析 20
2.2  应用程序生命周期管理 20
2.3  设计模式和开发指南 22
2.3.1  .NET设计规范 23
2.3.2  微软的模式和实践小组 23
2.3.3  显示界面层设计模式 24
2.3.4  对象–对象映射 25
2.3.5  依赖注入 25
2.4  研究和开发 26
2.4.1  自动化测试生成工具 27
2.4.2  契约式编码 30
2.5  微软安全开发生命周期 30
2.6  小结 32
第3章 实现预期目标 33
3.1  成功要素 34
3.1.1  项目启动阶段 37
3.1.2  超出范围 38
3.1.3  干扰和分心 38
3.1.4  学习与工作之间的平衡 39
3.2  共识 39
3.2.1  线框图 40
3.2.2  文档化架构 41
3.2.3  报表模型 42
3.2.4  细节化示例 42
3.2.5  创建原型 43
3.3  预期目标 44
3.3.1  交付 44
3.3.2  实际成果 44
3.3.3  趋势 46
3.4  小结 47
第4章 量化价值 48
4.1  价值 50
4.1.1  财务回报 50
4.1.2  提高可控性 51
4.1.3  提高质量品质 52
4.1.4  更加高效 53
4.2  数据来源 54
4.2.1  定量数据 54
4.2.2  定性数据 57
4.2.3  业界证据 58
4.3  小结 59
第5章 战略 60
5.1  认知 62
5.1.1  头脑风暴 62
5.1.2  规划 63
5.1.3  监控 64
5.1.4  沟通 64
5.2  个体过程 66
5.2.1  卓越的承诺 67
5.2.2  良性的纪律 67
5.2.3  效力和坚持 68
5.3  杠杆 69
5.3.1  自动化 69
5.3.2  警报系统 70
5.3.3  经验和专业知识 71
5.4  小结 71
第6章 .NET的规章制度 72
6.1  编码标准和指南 73
6.1.1  来源 73
6.1.2  异常 75
6.1.3  disposable模式 78
6.1.4  其他事项 82
6.2  代码异味 86
6.2.1  注释 86
6.2.2  过于复杂 88
6.2.3  未用到的、无法到达的和无效的代码 89
6.3  小结 89
第7章 强大的C#构造 90
7.1  扩展方法 91
7.2  隐式类型的局部变量 94
7.3  可以为null的类型 96
7.4  null合并运算符 98
7.5  可选参数 99
7.6  泛型 102
7.7  LINQ 103
7.8  小结 108
第8章 自动测试 109
8.1  案例研究 111
8.2  棕色地带的应用程序 112
8.3  绿色地带的应用程序 114
8.4  自动测试基础 115
8.5  测试代码的可维护性 115
8.5.1  命名约定 116
8.5.2  测试方法主体 119
8.6  单元测试 131
8.6.1  边界分析 133
8.6.2  无效参数 134
8.6.3  无效的前提条件 136
8.7  伪造、存根和模拟 137
8.7.1  隔离被测试代码 137
8.7.2  测试依赖交互 139
8.8  表面测试 140
8.9  自动集成测试 143
8.10  数据库注意事项 144
8.11  小结 145
第9章 生成自动化 146
9.1  生成工具 147
9.2  MSBuild基础 148
9.2.1  任务和目标 148
9.2.2  PropertyGroup和ItemGroup 150
9.2.3  基本任务 154
9.3  日志 155
9.4  参数和变量 157
9.5  库和扩展 159
9.6  导入和包含 160
9.7  内联任务 161
9.8  常见任务 163
9.8.1  日期和时间 163
9.8.2  程序集信息 164
9.8.3  XML的Peek和Poke 165
9.8.4  zip存档 166
9.9  自动部署 167
9.9.1  生成一次,部署多次 168
9.9.2  打包工具 169
9.9.3  部署工具 169
9.10  小结 170
第10章 持续集成 171
10.1  案例研究 172
10.2  CI服务器 173
10.2.1  CruiseControl.NET 174
10.2.2  Jenkins 175
10.2.3  TeamCity 175
10.2.4  Team Foundation Server 176
10.3  CI生命周期 176
10.3.1  重新生成 177
10.3.2  单元测试 182
10.3.3  分析 184
10.3.4  打包 187
10.3.5  部署 188
10.3.6  稳定性测试 190
10.3.7  生成报告 192
10.4  小结 192
第11章 代码分析 193
11.1  案例研究 195
11.2  静态分析 196
11.2.1  程序集分析 197
11.2.2  源代码分析 205
11.2.3  架构和设计 211
11.2.4  代码度量值 213
11.2.5  质量保证指标 213
11.3  动态分析 214
11.3.1  代码覆盖率 214
11.3.2  性能分析 216
11.3.3  查询分析 217
11.3.4  日志 217
11.4  小结 218
第12章 测试框架 219
12.1  单元测试框架 220
12.2  测试运行器 221
12.2.1  NUnit的GUI和控制台运行器 221
12.2.2  ReSharper测试运行器 224
12.2.3  Visual Studio测试运行器 227
12.2.4  Gallio测试运行器 230
12.2.5  xUnit.net测试运行器 231
12.3  xUnit测试模式 233
12.3.1  标识测试方法 233
12.3.2  标识测试类和夹具 234
12.3.3  断言 239
12.4  模拟对象框架 240
12.4.1  使用Rhino Mocks动态生成伪对象 240
12.4.2  使用Moles进行隔离测试 243
12.5  数据库测试框架 248
12.6  用户界面测试框架 252
12.6.1  Web应用程序测试框架 252
12.6.2  Windows窗体和其他用户界面测试框架 253
12.7  验收测试框架 253
12.7.1  测试规范和行为 254
12.7.2  业务逻辑验收测试 255
12.8  小结 256
第13章 反感和偏见 257
13.1  团体利益偏见 258
13.2  玫瑰色回顾 259
13.3  团体与个人的评价 260
13.4  维持现状和辩解机制 260
13.5  优势错觉 261
13.6  达克效应 261
13.7  鸵鸟效应 262
13.8  赌徒谬误 263
13.9  歧义效应 263
13.10  集中效应 264
13.11  双曲贴现 264
13.12  常态偏见 265
13.13  小结 265
附录A 参考资源 266
附录B 记分卡 279

教学资源推荐
作者: [美]布莱恩· W.克尼汉(Brian W. Kernighan),丹尼斯· M.里奇(Dennis M.Ritchie) 著
作者: [美] 基普·R.欧文(Kip R.Irvine) 著
作者: [美]沃特·萨维奇 (Walter Savitch) 肯里克·莫克(Kenrick Mock)著
作者: (美)Kenneth C.Louden
参考读物推荐
作者: 张良均 陈俊德 刘名军 陈荣 著
作者: [美]史蒂夫·奥库斯坦奈斯(Steve Aukstakalnis) 著
作者:
作者: 陈浩 等编著