内 容 提 要 本书共分为敏捷基础、 编写 SOLID 代码和自适应实例三大部分, 将理论与实践相结合, 介绍了当前 使用 Microsoft .NET Framework 进行 C# 编程的最佳实践,详尽探讨了 C# 开发人员如何应用 Scrum 等敏捷 方案实现高质量、自适应的代码,并给出大量代码示例,是 .NET 中高级程序员进阶的实用指南。 本书的读者对象为有一定经验的 .NET 开发人员。 ◆ 著 [英] Gary McLean Hall 译 许顺强 责任编辑 朱 巍 执行编辑 杨 琳 赵瑞琳 责任印制 彭志环 ◆ 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn 北京 印刷 ◆ 开本:800×1000 1/16 印张:22 字数:533千字 印数:1 — 3 000册 著作权合同登记号 2016年 7 月第 1 版 2016年 7 月北京第 1 次印刷 图字:01-2015-2389号 定价:69.00元 读者服务热线:(010)51095186转600 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东工商广字第 8052 号 2 前 言 谨以此书献给 Amelia Rose。 前 言 1 1 译 者 2 序 3 翻译这本书算是圆了我学生时期的一个心愿:在一本纸质书的封面上印上自己的名字。作为 一名 IT 技术人员,总是感觉自己的时间不够用,因为技术永无止境,让我从不敢懈怠。以前阅 读过许多“大侠”翻译的不少书籍,但对于译者的辛酸和困难都没有太大的感触。直到自己开始 实际动手翻译时,才发现整个过程中心情都是忐忑不安的,担心自己的翻译不能清楚传达原书作 者的真实意图,害怕自己的译文会让读者觉得乏味,于是,总是会对不满意的翻译片段心生焦虑, 也尽了自己最大努力对译文的选词和顺序进行反复的推敲和斟酌。当然,由于自身能力和精力有 限,相信大家肯定会找出翻译中需要改进的地方,在此先行感谢大家的热心指正。 原书内容的精彩我就不多赘述。本书主要针对 C#程序员,基于敏捷方法论,介绍使用 Microsoft .NET Framework 进行 C# 编程的当前最佳实践,其中包括了从敏捷项目过程到代码编写 的理论和实践的详细讲解。对于那些需要实操指导的读者来说,几乎全部内容都可以直接应用在 实际敏捷项目的管理和编码活动当中。如果你是一名初学者,可以在本书中学习到使用 C# 进行 敏捷开发的常见模式和实践,明辨其优劣,让自己走在正确的方向上,为后续的能力提升打下良 好的基础。如果你是一名中级开发人员,可以在本书中学习到业界的最佳实践,了解各种实践组 合,对 SOLID 原则获得深入的理解,并完全认识到其在实际代码开发中带来的益处。如果你是 一名高级开发人员,毫无疑问,你将获益最多。本书提供了大量设计模式、SOLID 原则、单元测 试、重构等理论的示例,将理论与实践关联起来,让你可以直接拿来应用于工作之中。 当然,尽信书不如无书,相信有读者会对书中所讲并不完全赞同,但表达意见的前提是首先 要理解书中讲解的本意。技术皆有优劣,作为 IT 技术人员,切忌用个人主观情绪来表达对技术 观点的不满。我有时会听到周围有人说: “我就是看着不爽!”他们习惯了一刀切,也不明白一句 古话: “三人行,必有我师焉。”原书作者 Gary 已经在全书技术理论和实例讲解过程中很好地穿 插了优缺点和应用场景的讨论。认真读完一本技术书的收获应该是:明悉技术的概念和原理,了 解其优缺点,并且知道其适用场合;如果还能在实践中针对缺点提出改进,那就再好不过了。 许顺强 2016 年 3 月 21 日 4 5 6 7 8 9 10 11 12 2 前 言 前 言 1 1 前 言 2 3 本书英文书名中首先提到的一个关键术语是自适应代码(Adaptive Code),这一关键术语很 好地诠释了应用本书中介绍的基本原则能够达成的效果:无需大量返工,代码即可自动适应后续 新的需求和无法预见的场景。本书旨在将使用 Microsoft .NET Framework 进行 C#编程的当前最佳 实践囊括于一卷之中。尽管其他书中也会涵盖本书中的某些内容,但这些书要么偏重于讲解理论, 要么就不是特定于.NET Framework 开发的。 编写代码不能急于求成。与阻碍变化的代码库相比,如果你的代码具有自适应能力,你就能 够更加快速、轻松地对其进行更改,并且不会引发多少错误。相信大家都知道,对于需求,不变 的主题就是变化。因此管理需求变更是软件项目成败的一个关键因素。面对需求变更,开发人员 可以有很多种应对方法,这些方法可以归类到下面要讲述的两种方法论。这两种方法论的主旨几 乎是截然相反的,特别是在变更处理的连续性上。 第一种是瀑布方法论。这种方法论要求开发人员必须遵循严格的流程。应用这种方法论的项 目中,大到要遵循的开发流程,小到要实现的类型设计都很不灵活,甚至几乎与 50 年前用穿孔 卡片进行编程开发一样死板。所有瀑布方法论都在竭尽全力确保软件很难被自由更改。软件开发 被划分为分析、设计、实现和测试几个显著不同的阶段,而且整个过程是单向的。一旦进入实现 阶段,用户就很难去变更需求,或者说至少要付出昂贵的代价才能变更需求。当然,代码也无需 为需求变更作任何准备,因为整个瀑布流程几乎不提供任何其他选项。 第二种是敏捷方法论。它不仅仅是另一种选择,而且是对瀑布方法论的一种彻底推翻。敏捷 流程的主旨就是拥抱变化,它被看作是客户和开发者之间的一个必要的联系纽带。如果客户想要 对自己付费的产品进行某些改变,就应该把时间和资金的代价与需求的变更关联起来,而不是直 接把变更加入流程中正在进行的阶段。软件工程的基础是源代码,相对于物理工程,它具有更好 的可塑性。建造一座房子的过程就是使用水泥把砖逐块粘合在一起,所以改变房子设计的代价就 很自然地与房子的建造完成度直接相关了。假设工程尚未开始,只有设计蓝图,那么变更设计的 代价相对来说就会很低。如果已经装好了窗户,布好了电线、管线,此时再想把楼上的浴室改到 楼下的厨房旁,那代价就会非常高了。软件产品的源代码具有良好的可塑性,因此移动特性和修 改用户界面的导航看起来不应该有很高的代价,但不幸的是,事实并不总是如此。单单时间成本 就经常不允许在软件产品中进行这样自由的变更。在我看来,这主要就是因为代码缺乏对需求变 更的自适应能力。 本书将通过一些实际的例子,为大家演示和讲解敏捷流程以及如何编写自适应代码。 4 5 6 7 8 9 10 11 12 2 前 言 本书面向的读者 本书的意图是要把理论与实践关联起来。如果你是经验丰富的高级开发人员,想要找一些设 计模式、SOLID 原则、单元测试、重构等理论的示例,那么这本书就是为你而作。 如果你是具有一定经验和能力的中级开发人员,想要学习业界的最佳实践,了解它们是如何 配合使用的,或者你对现在的业界最佳实践组合有疑问,都可以从这本书中获益,因为现实的项 目开发中很难找到简单且容易理解的实例或者理论。开发人员对大多数 SOLID 原则已经有所了 解,但是对于其中比较复杂的开放与封闭原则(第 6 章)和 Liskov 替换原则(第 7 章)的理解还 不够充分。即使是经验丰富的开发人员,有时也无法完全认识到依赖注入(第 9 章)给代码开发 带来的好处。与此类似,接口(第 3 章)能给代码带来的适配灵活性也经常被忽视。 如果你是刚刚入门的初级开发人员,读完这本书,也会有所收获。你可以学习到常见的模式 和实践,并且知道哪些方面是好的,哪些方面从长期来看是不好的。我见到的软件开发实习生所 写的代码有很多共同点,到处都可以看到随从反模式(第 2 章)和服务定位器反模式(第 9 章) 的代码。通常,实习生已经具备了很多方面的软件开发技能,要把他变成一个重量级的开发人员, 只需要在正确的方向上推他们一把即可。本书也提供了多种可选的实践方案,并对其优缺点进行 了详细解释。 阅读本书的前提条件 要阅读这本书,你应该具备一些在语法上与 C#类似的编程语言(比如 Java 或 C++)的实战 经验,也应该精通条件分支、循环和表达式等核心过程编程概念。此外,还应该有使用类进行面 向对象开发的经验,并且对接口的概念有所了解。 本书不适合哪些人 如果你刚刚开始学习编程开发,那么本书并不适合你,因为书中涉及一些高级开发话题,需 要你对基本的编程开发概念有深入的理解。 本书结构 本书共分为三个部分,每一部分都以上个部分为基础。尽管如此,也可以从任何一个部分开 始阅读本书。每个章节都详细讲解了一个完整的主题,并在适当的地方包括了指向其他章节的交 叉索引。 第一部分 敏捷基础 这个部分会讲解如何以自适应方式开发软件的基础概念,其中包括业界有名的敏捷流程 Scrum,该流程要求代码具有自适应变更的能力。这一部分的所有章节都围绕接口、设计模式、 前 言 3 重构和单元测试进行详细的讲解。 第1章 Scrum 介绍 这一章是本书的开篇,首先介绍一种业界知名的敏捷项目管理方法论 Scrum,然后详细介 绍 Scrum 项目中相关的工件、角色、度量标准和阶段的概念,最后为大家展示如何在敏 捷环境下组织资源和代码。 1 2 第2章 依赖和分层 这一章将引领你一起探索依赖和架构分层。代码要做到自适应,前提是解决方案的结构 允许这样做。首先讲解三种不同类型的依赖:第一方、第三方和框架;然后讲解如何从 反模式(应该避免的)到模式(应该使用的)来管理和组织所有的依赖关系;最后会介 绍一些高级主题供你进一步阅读,比如面向切面编程和非对称分层等。 第3章 接口和设计模式 在现代.NET 应用的开发中,接口几乎无处不在,但是它们也经常被滥用、误解和错用。 这一章将首先通过一些常见和实用的设计模式来展示接口的多种用途;然后阐明除了使 用接口进行简单的抽象外,还能够以多种不同的方式使用接口来解决同一个问题。如果 能够流利地使用开发者武器库中的混合类型、鸭子类型和流接口,将更能体会到接口的 强大用途。 第4章 单元测试和重构 单元测试和重构正在成为开发人员必备的两个实战技能,只有同时应用这两个技能,才 能编写出自适应代码。没有完备的单元测试,重构动作肯定会造成很多错误;没有重构, 代码则会变得臃肿、僵化且难以理解。这一章会从一个十分简单的单元测试示例开始讲 解,然后扩展讲解更高级、实用的模式和实践,比如流断言、测试
C#敏捷开发实践
计算机 >
C# >
C#-1 >
文档预览
353 页
0 下载
541 浏览
0 评论
0 收藏
3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文档由 user 于 2021-02-28 13:54:33上传分享