摘要
以4个设计原则为中心,全面呈现25种在软件项目中导致技术债务的设计坏味
提供一种独特的坏味命名方法,帮助理解坏味的由来并指出潜在重构方法
包含丰富的例证,展现糟糕设计实践的潜在坏味及其产生的问题
囊括重构设计坏味、管理技术债务和在实践中构建、维护高质量软件的实用技巧
从现实项目中选取发人深省的趣闻轶事和案例研究
软件设计重构 内容简介
本书主要介绍25个软件架构坏味,它们在确定设计问题时的作用以及可用的重构方法,并结合图表和示例给出了详尽说明,旨在引领读者掌握代码易读、易修改的关键,让代码具备重构能力。另外,本书将何时应该重构、重构时遇到的一些常见问题穿插在了示例讲解中。
本书适合软件架构师、软件开发工程师和项目经理。
软件设计重构 目录
第1章 技术债务
1.1 何为技术债务
1.2 技术债务的组成部分
1.3 技术债务的影响
1.4 引发技术债务的因素
1.5 如何管理技术债务
第2章 设计坏味
2.1 为何要关心坏味
2.2 导致坏味的原因
2.2.1 违反设计原则
2.2.2 不恰当地使用模式
2.2.3 语言的局限性
2.2.4 面向对象中的过程型思维
2.2.5 粘滞性
2.2.6 未遵循最佳实践和过程
2.3 如何消除坏味
2.4 本书涵盖的坏味
2.5 一种设计坏味分类方案
2.5.1 基于设计原则的坏味分类
2.5.2 坏味命名方案
2.5.3 坏味记录模板
第3章 抽象型坏味
3.1 缺失抽象
3.1.1 理据
3.1.2 潜在的原因
3.1.3 示例
3.1.4 重构建议
3.1.5 影响的质量指标
3.1.6 别名
3.1.7 现实考虑
3.2 命令式抽象
3.2.1 理据
3.2.2 潜在的原因
3.2.3 示例
3.2.4 重构建议
3.2.5 影响的质量指标
3.2.6 别名
3.2.7 现实考虑
3.3 不完整的抽象
3.3.1 理据
3.3.2 潜在的原因
3.3.3 示例
3.3.4 重构建议
3.3.5 影响的质量指标
3.3.6 别名
3.3.7 现实考虑
3.4 多方面抽象
3.4.1 理据
3.4.2 潜在的原因
3.4.3 示例
3.4.4 重构建议
3.4.5 影响的质量指标
3.4.6 别名
3.4.7 现实考虑
3.5 不必要的抽象
3.5.1 理据
3.5.2 潜在的原因
3.5.3 示例
3.5.4 重构建议
3.5.5 影响的质量指标
3.5.6 别名
3.5.7 现实考虑
3.6 未用的抽象
3.6.1 理据
3.6.2 潜在的原因
3.6.3 示例
3.6.4 重构建议
3.6.5 影响的质量指标
3.6.6 别名
3.6.7 现实考虑
3.7 重复的抽象
3.7.1 理据
3.7.2 潜在的原因
3.7.3 示例
3.7.4 重构建议
3.7.5 影响的质量指标
3.7.6 别名
3.7.7 现实考虑
第4章 封装型坏味
4.1 不充分的封装
4.1.1 理据
4.1.2 潜在的原因
4.1.3 示例
4.1.4 重构建议
4.1.5 影响的质量指标
4.1.6 别名
4.1.7 现实考虑
4.2 泄露的封装
4.2.1 理据
4.2.2 潜在的原因
4.2.3 示例
4.2.4 重构建议
4.2.5 影响的质量指标
4.2.6 别名
4.2.7 现实考虑
4.3 缺失封装
4.3.1 理据
4.3.2 潜在的原因
4.3.3 示例
4.3.4 重构建议
4.3.5 影响的质量指标
4.3.6 别名
4.3.7 现实考虑
4.4 未利用封装
4.4.1 理据
4.4.2 潜在的原因
4.4.3 示例
4.4.4 重构建议
4.4.5 影响的质量指标
4.4.6 别名
4.4.7 现实考虑
第5章 模块化型坏味
5.1 拆散的模块化
5.1.1 理据
5.1.2 潜在的原因
5.1.3 示例
5.1.4 重构建议
5.1.5 影响的质量指标
5.1.6 别名
5.1.7 现实考虑
5.2 不充分的模块化
5.2.1 理据
5.2.2 潜在的原因
5.2.3 示例
5.2.4 重构建议
5.2.5 影响的质量指标
5.2.6 别名
5.2.7 现实考虑
5.3 循环依赖式模块化
5.3.1 理据
5.3.2 潜在的原因
5.3.3 示例
5.3.4 重构建议
5.3.5 影响的质量指标
5.3.6 别名
5.3.7 现实考虑
5.4 轮毂式模块化
5.4.1 理据
5.4.2 潜在的原因
5.4.3 示例
5.4.4 重构建议
5.4.5 影响的质量指标
5.4.6 别名
5.4.7 现实考虑
第6章 层次结构型坏味
6.1 缺失层次结构
6.1.1 理据
6.1.2 潜在的原因
6.1.3 示例
6.1.4 重构建议
6.1.5 影响的质量指标
6.1.6 别名
6.1.7 现实考虑
6.2 不必要的层次结构
6.2.1 理据
6.2.2 潜在的原因
6.2.3 示例
6.2.4 重构建议
6.2.5 影响的质量指标
6.2.6 别名
6.2.7 现实考虑
6.3 未归并的层次结构
6.3.1 理据
6.3.2 潜在的原因
6.3.3 示例
6.3.4 重构建议
6.3.5 影响的质量指标
6.3.6 别名
6.3.7 现实考虑
6.4 过宽的层次结构
6.4.1 理据
6.4.2 潜在的原因
6.4.3 示例
6.4.4 重构建议
6.4.5 影响的质量指标
6.4.6 别名
6.4.7 现实考虑
6.5 凭空想象的层次结构
6.5.1 理据
6.5.2 潜在的原因
6.5.3 示例
6.5.4 重构建议
6.5.5 影响的质量指标
6.5.6 别名
6.5.7 现实考虑
6.6 过深的层次结构
6.6.1 理据
6.6.2 潜在的原因
6.6.3 示例
6.6.4 重构建议
6.6.5 影响的质量指标
6.6.6 别名
6.6.7 现实考虑
6.7 叛逆型层次结构
6.7.1 理据
6.7.2 潜在的原因
6.7.3 示例
6.7.4 重构建议
6.7.5 影响的质量指标
6.7.6 别名
6.7.7 现实考虑
6.8 支离破碎的层次结构
6.8.1 理据
6.8.2 潜在的原因
6.8.3 示例
6.8.4 重构建议
6.8.5 影响的质量指标
6.8.6 别名
6.8.7 现实考虑
6.9 多路径层次结构
6.9.1 理据
6.9.2 潜在的原因
6.9.3 示例
6.9.4 重构建议
6.9.5 影响的质量指标
6.9.6 别名
6.9.7 现实考虑
6.10 循环层次结构
6.10.1 理据
6.10.2 潜在的原因
6.10.3 示例
6.10.4 重构建议
6.10.5 影响的质量指标
6.10.6 别名
6.10.7 现实考虑
第7章 坏味生态系统
7.1 具体情况的影响
7.2 坏味的相互影响
7.2.1 坏味通常不单独出现
7.2.2 坏味可能昭示着存在更深层的问题
第8章 技术债务偿还实战
8.1 工具
8.1.1 理解工具
8.1.2 评估工具、代码克隆检测器和度量工具
8.1.3 技术债务量化和可视化工具
8.1.4 重构工具
8.1.5 实际使用工具
8.2 流程
8.2.1 重构面临的挑战
8.2.2 让人认可重构
8.2.3 IMPACT——一个重构流程模型
8.2.4 技术债务偿还重构最佳实践
8.3 人员
8.3.1 培训
8.3.2 研讨会和讲座
8.3.3 以身作则
附录A 软件设计原则
附录B 技术债务偿还工具
附录C 示意图使用的表示法
附录D 推荐读物
参考文献
软件设计重构 精彩文摘
第1章 技术债务
要开启设计坏味重构之旅,必须回答的第一个也是最基本的问题是:何为设计坏味以及为何必须重构设计以消除坏味?
在其著作《人月神话》中,Fred Brooks 描绘了软件的固有特征(即复杂性、一致性、可修改性和不可见性)导致软件设计是个“本质性”难题。为破解这个难题,必须遵循良好的设计实践。一种这样的实践是,软件设计人员必须找出并消除设计决策可能导致的设计坏味,这正是本书要探讨的主题。
那么,何为设计坏味呢?
设计坏味是特定的设计结构,它们违反了基本设计原则,给设计质量带来负面影响。
换句话说,设计坏味表明设计结构中存在潜在的问题。医疗领域为理解坏味提供了很好的类比:可将病人的症状比作“坏味”,将疾病比作“设计问题”。
还可将这种类比延伸到诊断过程。例如,医生分析症状,确定引发症状的疾病,再提出治疗方案。类似地,设计人员必须分析设计中发现的坏味,判断导致坏味的问题,再确定如何重构以解决问题。
介绍了设计坏味后,让我们再说说必须重构设计以消除坏味的原因。
问题的答案在于技术债务—— 一个在最近几年被软件开发界广泛关注的术语。软件开发人员必须对技术债务有大致的认识,这样才能明白其日常设计决策的长远影响。鉴于此,本章余下的篇幅将专注于讨论技术债务。
本文来自挽梦忆笙歌投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。