重构:改善既有代码的设计
需积分: 0 137 浏览量
更新于2024-06-30
收藏 39.15MB DOCX 举报
"本书摘自关于重构的一章,讨论了重构的基本概念、原则、实践以及代码中的不良模式。"
重构是一个在软件开发过程中至关重要的实践,它涉及到改进代码结构,提高可读性和可维护性,而不改变其外在行为。在这个过程中,开发者遵循一系列规则和技巧,确保代码质量得到提升。
在《重构》的第一个案例中,作者通过一个具体的例子展示了如何开始重构。起点通常是一个需要改进的现有功能或模块。第一步是识别可以优化的部分,例如在"起点"中提到的`statement()`方法。接下来,对这个方法进行分解和重组,通过一系列小步骤逐步改进。这些步骤包括:首先,将计算金额的代码分离出来;然后,提炼出常客积分计算的独立逻辑;接着,消除临时变量以减少代码复杂性;最后,利用多态来替换与价格相关的条件逻辑,使得代码更加简洁且易于扩展。
重构的原则涵盖了多个方面。"What"部分明确了重构的定义,作为名词,它表示对内部结构的改进;作为动词,它是持续进行的过程。"Why"部分解释了重构的重要性,包括改善软件设计、增进代码理解、便于查找和修复bug,以及提高编程效率。"When"部分建议在添加功能、修复错误或进行代码审查时进行重构。
然而,重构并非总是简单的,也存在一些挑战,如处理数据库变更、调整接口、面对无法通过重构轻易解决的设计更改。有时,考虑到潜在的风险和成本,可能需要避免重构。此外,重构与设计和性能之间需要找到平衡,既要保持良好的设计,也要注意不要过度重构导致性能下降。
书中列举了一系列代码的"坏味道",这些是代码质量低下的标志。例如,重复代码(Duplicated Code)可能导致维护困难;过长函数(Long Method)使得代码难以理解和测试;过大的类(Large Class)可能职责过多;过长参数列表(Long Parameter List)增加了调用者的负担;发散式变化(Divergent Change)意味着一个类需要在不同方向上同时修改;霰弹式修改(Shotgun Surgery)指为了修改一处功能而广泛修改代码;依恋情节(Feature Envy)表明一个方法可能应该属于另一个类;数据泥团(Data Clumps)暗示可能需要一个新的类或数据结构;基本类型偏执(Primitive Obsession)可能导致过度使用简单类型;switch惊悚现身(Switch Statements)可能提示需要多态;平衡继承体系(Parallel Inheritance Hierarchies)指出可能存在的设计问题;冗赘类(Lazy Class)则可能是不必要的代码。
重构是提升软件质量的关键活动,涉及识别和修正代码的不良模式,以及遵循一系列原则和技巧来改进代码结构。通过不断实践和学习,开发者可以更好地掌握这一技能,从而创造出更优秀、更易于维护的软件系统。
2021-08-11 上传
2019-03-20 上传
2018-06-10 上传
2023-06-28 上传
2023-05-30 上传
2023-06-09 上传
2023-07-27 上传
2023-09-16 上传
2023-12-08 上传
巧笑倩兮Evelina
- 粉丝: 26
- 资源: 335
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能