搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
软件开发中的决策(权衡与取舍)
0.00     定价 ¥ 99.80
图书来源: 浙江图书馆(由浙江新华配书)
此书还可采购24本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787115635167
  • 作      者:
    作者:(美)托马斯·莱莱克//乔恩·斯基特|责编:李瑾|译者:陆明刚//胡世杰
  • 出 版 社 :
    人民邮电出版社
  • 出版日期:
    2024-11-01
收藏
畅销推荐
内容介绍
本书详细阐述如何在设计、规划和实现软件时做出更好的决策,通过真实的案例,以抽丝剥茧的方式分析那些失误的决策,探讨还有哪些可能的解决方案,并对比各种方案的优缺点,摸索软件设计的常青模式。本书通过实例来说明某些决策的后果,例如代码重复如何影响系统的耦合与演进速度,以及如何在日期和时间信息方面隐藏细微差别。本书还介绍如何根据帕累托法则有效地缩小优化范围,确保分布式系统的一致性。 通过阅读本书,读者很快就可以将作者来之不易的经验应用到自己的项目中,以预防错误并采取更合适的编程决策。 本书适合负责软件设计与实现决策的中高级开发人员和架构师阅读。
展开
目录
第1章 引言
1.1 决策的后果与模式
1.1.1 单元测试
1.1.2 单元测试与集成测试的比例
1.2 设计模式及其失效分析
1.3 架构设计模式及其失效分析
1.3.1 可扩展性与弹性
1.3.2 开发速度
1.3.3 微服务的复杂性
小结
第2章 代码重复不一定是坏事:代码重复与灵活性的权衡
2.1 代码库间的通用代码及重复代码
2.1.1 添加新需求导致的代码重复
2.1.2 实现新的业务需求
2.1.3 结果评估
2.2 通过库在代码库之间共享代码
2.2.1 共享库的取舍与不足
2.2.2 创建共享库
2.3 抽取代码为一个独立的微服务
2.3.1 采用独立微服务方式的取舍与弊端
2.3.2 关于独立微服务的总结
2.4 通过代码重复改善松耦合
2.5 利用继承减少API设计中的重复
2.5.1 抽取出一个请求处理器作为基类
2.5.2 继承与紧耦合的取舍
2.5.3 继承与组合的取舍
2.5.4 一贯性的重复与偶然性的重复
小结
第3章 异常及其他——代码错误的处理模式
3.1 异常的层次结构
3.2 代码异常处理的最佳模式
3.2.1 公共API的已检测异常处理
3.2.2 公共API的未检测异常处理
3.3 异常处理的反模式
3.3.1 异常时,关闭资源
3.3.2 反模式:利用异常控制应用流
3.4 源自第三方库的异常
3.5 多线程环境中的异常
3.6 使用Try以函数式的途径处理异常
3.6.1 在生产代码中使用Try
3.6.2 混合使用Try与抛出异常的代码
3.7 异常处理策略的性能对比
小结
第4章 灵活性与复杂性的权衡
4.1 一个健壮但无法扩展的API
4.1.1 设计一个新组件
4.1.2 从最简单的代码开始
4.2 允许客户使用自己的指标框架
4.3 通过钩子为你的API提供可扩展性
4.3.1 防范钩子API的过度使用
4.3.2 钩子API的性能影响
4.4 通过侦听器为你的API提供可扩展性
4.4.1 使用侦听器与钩子的取舍
4.4.2 设计的不可修改性
4.5 API的灵活性分析及维护开销的权衡
小结
第5章 过早优化vs热路径优化:影响代码性能的决策
5.1 过早优化是万恶之源
5.1.1 构建账户处理管道
5.1.2 依据错误的假设进行优化处理
5.1.3 对性能优化进行基准测试
5.2 代码中的热路径
5.2.1 从软件系统的角度理解帕累托法则
5.2.2 依据SLA配置线程(并发用户)数
5.3 具有潜在热路径的word服务
5.3.1 获取每日一词
5.3.2 验证单词是否存在
5.3.3 使用HTTP服务,向外提供WordsService
5.4 检测你代码中的热路径
5.4.1 使用Gatling创建API的性能测试
5.4.2 使用MetricRegistry度量代码路径
5.5 改进热路径的性能
5.5.1 为现有代码创建JMH微基准测试
5.5.2 利用缓存优化word-exists程序
5.5.3 调整性能测试,使用更多的输入单词
小结
第6章 API的简洁性vs维护成本
6.1 一个为其他工具服务的基础库
6.1.1 创建云服务客户端
6.1.2 漫谈认证策略
6.1.3 理解配置的机制
6.2 直接暴露依赖库的配置
6.3 一个将依赖库的配置抽象化的工具
6.4 为云服务客户端库添加新的配置
6.4.1 为批处理工具添加新配置
6.4.2 为流处理工具添加新配置
6.4.3 方案对比:用户体验的友好性vs维护成本
6.5 弃用删除云服务客户端库的某个配置
6.5.1 删除批处理工具的某个配置
6.5.2 删除流服务中某个配置
6.5.3 两种方案用户体验与维护成本的比较
小结
第7章 高效使用日期和时间数据
7.1 日期和时间信息的概念
7.1.1 机器时间:时间戳、纪元以及持续时间
7.1.2 民用时间:日历系统、日期时间以及期间
7.1.3 时区、UTC以及UTC偏移量
7.1.4 让人头疼的日期和时间概念
7.2 准备处理日期和时间信息
7.2.1 对范畴做限定
7.2.2 澄清日期和时间的需求
7.2.3 使用恰当的库或者包
7.3 实现日期和时间代码
7.3.1 保持概念的一致性
7.3.2 通过避免使用默认值提升可测试性
7.3.3 以文本方式表示日期和时间
7.3.4 通过注释解释代码
7.4 有必要单独指出并测试的极端情况
7.4.1 日历计算
7.4.2 发生在午夜时分的时区转换
7.4.3 处理不明确或者跳过的时间
7.4.4 处理不断变化的时区数据
小结
第8章 利用机器的数据本地性和内存
8.1 数据本地性是什么
8.1.1 将计算移动到数据处
8.1.2 用数据本地性扩展数据处理
8.2 数据的分区
8.2.1 线下大数据分区
8.2.2 分区和分片的区别
8.2.3 分区算法
8.3 连接多个分区上的大数据集
8.3.1 在同一台物理机上连接数据
8.3.2 需要数据移动的连接
8.3.3 利用广播优化连接
8.4 在内存还是磁盘中进
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证