news 2026/3/28 15:44:52

22、重构:模式、方法与遗留代码处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
22、重构:模式、方法与遗留代码处理

重构:模式、方法与遗留代码处理

1. 模式可作为重构目标

部分重构操作实际上是以其最终形成的模式命名的,例如“形成模板方法(Form Template Method)”和“用状态/策略替换类型代码(Replace Type Code with State/Strategy)”。模式代表着优秀设计的范例,而重构则是将现有设计转变为更优设计的过程。如果模式和重构之间没有某种交汇,那我们就得怀疑其中一方可能存在问题。

即使那些并非专门与特定模式相关的重构,也可用于在现有设计中发现模式。Josh Kerievsky 在其著作中很好地阐述了这一点,值得一读。

2. 避免重构:预重构

了解如何进行重构极为有用,将其作为一门学科来学习,在设计的演进过程中尤为重要。然而,重构既耗时,也并非总是那么有趣,所以能避免时,我们应尽量避免。

例如,遵循按意图编程的实践,若程序员一开始就采用这种方式,某些重构(如提取方法)后的代码形态可能在初始编程时就已实现。再如,封装构造函数的实践能使设计后期出现多态时,改动范围大幅受限,从而减少重构需求。另外,如果在设计时始终考虑模式,像“形成模板方法”这类重构操作或许就无需进行。

不过,我们仍需掌握重构操作,除非满足以下条件:
- 你是完美无缺的。
- 你无需处理他人的代码。
- 你明天才开始编写第一段代码。
- 你永远不会遇到完全打乱设计的需求变更。

显然,这些条件很难全部满足,所以重构技能必不可少。

3. 重构的机制

Fowler 的书中提供了一份重构目录,针对每个重构操作都给出了具体步骤。以常见

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 21:03:07

终极指南:如何用IINA打造完美的macOS视频播放体验

终极指南:如何用IINA打造完美的macOS视频播放体验 【免费下载链接】iina 项目地址: https://gitcode.com/gh_mirrors/iin/iina 还在为macOS上找不到好用的视频播放器而烦恼吗?IINA视频播放器作为专为苹果用户设计的播放工具,完美解决…

作者头像 李华
网站建设 2026/3/26 0:24:52

24、《测试驱动开发与设计模式中的测试挑战及解决方案》

《测试驱动开发与设计模式中的测试挑战及解决方案》 1. 测试性与设计模式带来的挑战 可测试性是衡量代码质量的重要线索,但使用设计模式有时却会引发测试问题。如果设计模式反映的特性正是测试期望引导我们达成的,为何使用模式反而让测试变得更难了呢? 就像一个著名的故事…

作者头像 李华
网站建设 2026/3/27 19:27:04

33、软件设计中的沟通、模式与可维护性

软件设计中的沟通、模式与可维护性 1. 沟通的本质与软件的类比 在交流中,我们常常忽略了一个重要的事实:语言只是沟通的“令牌”。就像几年前参加的一门关于语言和信息传递的课程中提到的,两个人交谈时,话语本身并非沟通,而是沟通意义的代表。在任何形式的交流里,都存在…

作者头像 李华
网站建设 2026/3/26 5:54:33

终极图像标注工具:COCO Annotator完整使用指南

终极图像标注工具:COCO Annotator完整使用指南 【免费下载链接】coco-annotator :pencil2: Web-based image segmentation tool for object detection, localization, and keypoints 项目地址: https://gitcode.com/gh_mirrors/co/coco-annotator COCO Annot…

作者头像 李华
网站建设 2026/3/25 11:55:44

uniapp+vue基于Android系统的个人记账备忘录 收支理财小程序

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华
网站建设 2026/3/20 1:00:19

游戏文本提取神器:Textractor带你轻松解锁游戏对话宝库

想知道如何从你喜爱的游戏中提取那些精彩的对话文本吗?Textractor这款开源工具或许正是你需要的解决方案!作为专为Windows系统设计的文本钩子工具,它能够精准捕获游戏运行时的文本输出,无论是进行游戏本地化、制作MOD,…

作者头像 李华