重构——您想修复代码中的什么问题?

2025-06-07

重构——您想修复代码中的什么问题?

当我们开始研究重构技术时,我们会在代码中发现一些(反)模式。许多模式的名称不太清晰,乍一看很难理解它们是什么。

面对这个困难,我决定创建一个指南,根据我们在查看代码时感受到的痛苦来识别哪些是模式。

1. 代码增长过快(膨胀)

  1. 同一组数据在几个不同的地方重复出现=数据聚集
  2. 有太多的原语,很多常量或原语应该是一个对象=原始痴迷
  3. 方法太长= 长方法
  4. 班级规模过大= 班级规模过大
  5. 参数太多=参数列表太长

2. 滥用面向对象(滥用面向对象)引起的问题

  1. 大量 if/switch case = Switch 语句
  2. 临时变量= 临时字段
  3. 两个具有相同功能但名称不同的类= 具有不同接口的替代类
  4. 我的孩子类很少使用父亲类=拒绝遗赠

3. 导致任何代码修改都过于困难的问题,因为我们必须修改几个不同的地方才能进行修改(变更阻止器)

  1. 为了进行简单的更改,我需要在一个类中遍历几种不同的方法= 发散更改
  2. 为了改变某些事情,我需要在不同的课程中经历几个不同的地方=散弹式手术
  3. 如果我需要为类 X 创建一个子类,那么我还需要为类 Y 创建一个子类= 并行继承层次结构

4. 代码里有很多无用的东西。它们的存在只会增加代码理解的难度(可有可无)

  1. 重复代码= 重复代码(呃)
  2. 有一个不做任何事情的类= 懒惰类
  3. 这段代码是在思考未来(可能永远不会到来)的情况下创建的=推测普遍性
  4. 我有一个包含一堆 getter 和 setter 的类,它的存在只是为了被操作。它可能只是用作数据库接口= 数据类
  5. 评论= 评论 (duh2)

5. 类之间距离太近,相互依赖,耦合度高

  1. 访问另一个对象的大量 get 方法= Feature Envy
  2. 对象调用另一个对象,该对象又调用另一个对象,该对象又调用另一个对象... = 消息链
  3. 一个类仅充当另一个类的中介= 中间人
  4. 一个类使用另一个类的方法和字段= 不适当的亲密关系
  5. 我安装的库不能满足我的所有需求= 不完整的库类

这些模式仅用于确定重构时需要查看的内容。每种模式都有相应的解决方案。您可以在此网站找到所有相关信息。

如果您愿意/可以多投入一点,我建议您购买“重构”书籍,因为它们比上面提到的网站有更多(更多)的例子,并且是一个很好的咨询来源。


亚历克斯·安德鲁斯 (Alex Andrews)发布的图片

文章来源:https://dev.to/rachc/refactoring-what-problem-on-your-code-do-you-want-to-fix-487f
PREV
搜索引擎和社交媒体爬虫如何呈现 JavaScript
NEXT
📚 Redux Toolkit 设置教程 Redux Toolkit 教程