×
暂无评论
图文详情
  • ISBN:9787115635167
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:364
  • 出版时间:2024-11-01
  • 条形码:9787115635167 ; 978-7-115-63516-7

本书特色

深刻剖析软件设计决策中的权衡与取舍,涵盖单体系统、微服务、大数据处理等多领域。 通过真实案例与代码片段,展示软件设计模式的实际应用与错误决策的教训。 深入分析软件设计中的潜在问题与局限,提前预防未来可能出现的陷阱。 通过预识别设计问题,减少后期修改与重构的成本。 阐释如何平衡灵活性与复杂性、性能与优化等关键设计要素。 提供一套系统化的方法,帮助软件工程师在有限资源下做出更明智的决策。 通过增进对软件设计取舍的理解,提升代码质量与项目成功率。

内容简介

软件项目中的每一步都涉及权衡。在生产环境中,当你在权衡速度、安全性、成本、交付时间、功能等因素时,如何做出合理的设计选择是重要问题。本书中的专业见解和贴合实际的故事将帮助你在设计和构建应用程序时做出正确的选择。
本书探讨了做出错误权衡决策的真实场景,并说明了本可以采取的不同做法。在书中,作者托马斯·莱莱克和乔恩·斯基特分享了基于他们数十年软件工程经验的智慧,包括非常具有借鉴意义的错误案例。每个案例都附有具体的提示和实用技术,还提供了可能会改变你处理后续项目的常青模式。
通过阅读本书,你将掌握:
如何系统地分析软件;
如何选择工具、库和框架;
紧耦合和松耦合如何影响团队协作;
精确、易于实现和易于测试的需求。
本书适合负责软件设计与实现决策的中高级开发人员和架构师阅读。

目录

第 1 章 引言 1 1.1 决策的后果与模式 2 1.1.1 单元测试 2 1.1.2 单元测试与集成测试的比例 3 1.2 设计模式及其失效分析 5 1.3 架构设计模式及其失效分析 10 1.3.1 可扩展性与弹性 11 1.3.2 开发速度 12 1.3.3 微服务的复杂性 12 小结 14 第 2 章 代码重复不一定是坏事:代码重复与灵活性的权衡 15 2.1 代码库间的通用代码及重复代码 16 2.1.1 添加新需求导致的代码重复 17 2.1.2 实现新的业务需求 17 2.1.3 结果评估 19 2.2 通过库在代码库之间共享代码 19 2.2.1 共享库的取舍与不足 20 2.2.2 创建共享库 21 2.3 抽取代码为一个独立的微服务 22 2.3.1 采用独立微服务方式的取舍与弊端 24 2.3.2 关于独立微服务的总结 27 2.4 通过代码重复改善松耦合 28 2.5 利用继承减少 API 设计中的重复 31 2.5.1 抽取出一个请求处理器作为基类 33 2.5.2 继承与紧耦合的取舍 35 2.5.3 继承与组合的取舍 36 2.5.4 一贯性的重复与偶然性的重复 37 小结 38 第 3 章 异常及其他——代码错误的处理模式 39 3.1 异常的层次结构 40 4 3.2 代码异常处理的*佳模式 44 3.2.1 公共 API 的已检测异常处理 45 3.2.2 公共 API 的未检测异常处理 46 3.3 异常处理的反模式 47 3.3.1 异常时,关闭资源 49 3.3.2 反模式:利用异常控制应用流 51 3.4 源自第三方库的异常 51 3.5 多线程环境中的异常 54 3.6 使用 Try 以函数式的途径处理异常 59 3.6.1 在生产代码中使用 Try 62 3.6.2 混合使用 Try 与抛出异常的代码 64 3.7 异常处理策略的性能对比 65 小结 68 第 4 章 灵活性与复杂性的权衡 70 4.1 一个健壮但无法扩展的API 71 4.1.1 设计一个新组件 71 4.1.2 从*简单的代码开始 72 4.2 允许客户使用自己的指标框架 75 4.3 通过钩子为你的 API提供可扩展性 77 4.3.1 防范钩子
展开全部

作者简介

托马斯·莱莱克(Tomasz Lelek)托马斯在他的软件开发职业生涯里,设计并开发过各种各样的生产服务、软件架构,他精通多种编程语言(大多数是基于 JVM 的)。他既实现过单体系统,也曾做过与微服务架构相关的工作。他设计的有些系统可服务数千万用户,每秒处理数十万的操作量。他的工作方向如下:? 设计采用 CQRS 架构的微服务(基于 Apache Kafka);? 市场自动化及事件流处理;? 基于 Apache Spark 和 Scala 的大数据处理。 托马斯现在就职于 Dremio,负责创建现代大数据处理的数据湖解决方案。在此之前,他在DataStax 负责与 Cassandra 数据库相关的一些产品。他设计的工具帮助成千上万的开发者设计出性能优异、用户友好的 API,发挥了重要的作用。他为 Java-Driver、Cassandra Quarkus、Cassandra-Kafka Connector 以及 Stargate 都贡献过代码。 乔恩·斯基特(Jon Skeet)乔恩是谷歌公司的资深开发工程师,目前的工作方向是谷歌云的.NET 客户端库。他向开源社区贡献了.NET 版本的 Noda 时间库,然而他*让人称道的是他在 Stack Overflow 开发者社区的贡献。乔恩是 Manning 出版社出版的 C# in Depth 一书的作者,此外,他还对 Groovy in Action 以及 Real-World Functional Programming 两书有所贡献。乔恩对日期时间 API 以及 API版本非常感兴趣,这些通常是无人问津的冷门话题。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航