重构——您想修复代码中的什么问题?
当我们开始研究重构技术时,我们会在代码中发现一些(反)模式。许多模式的名称不太清晰,乍一看很难理解它们是什么。
面对这个困难,我决定创建一个指南,根据我们在查看代码时感受到的痛苦来识别哪些是模式。
1. 代码增长过快(膨胀)
- 同一组数据在几个不同的地方重复出现=数据聚集
- 有太多的原语,很多常量或原语应该是一个对象=原始痴迷
- 方法太长= 长方法
- 班级规模过大= 班级规模过大
- 参数太多=参数列表太长
2. 滥用面向对象(滥用面向对象)引起的问题
- 大量 if/switch case = Switch 语句
- 临时变量= 临时字段
- 两个具有相同功能但名称不同的类= 具有不同接口的替代类
- 我的孩子类很少使用父亲类=拒绝遗赠
3. 导致任何代码修改都过于困难的问题,因为我们必须修改几个不同的地方才能进行修改(变更阻止器)
- 为了进行简单的更改,我需要在一个类中遍历几种不同的方法= 发散更改
- 为了改变某些事情,我需要在不同的课程中经历几个不同的地方=散弹式手术
- 如果我需要为类 X 创建一个子类,那么我还需要为类 Y 创建一个子类= 并行继承层次结构
4. 代码里有很多无用的东西。它们的存在只会增加代码理解的难度(可有可无)
- 重复代码= 重复代码(呃)
- 有一个不做任何事情的类= 懒惰类
- 这段代码是在思考未来(可能永远不会到来)的情况下创建的=推测普遍性
- 我有一个包含一堆 getter 和 setter 的类,它的存在只是为了被操作。它可能只是用作数据库接口= 数据类
- 评论= 评论 (duh2)
5. 类之间距离太近,相互依赖,耦合度高
- 访问另一个对象的大量 get 方法= Feature Envy
- 对象调用另一个对象,该对象又调用另一个对象,该对象又调用另一个对象... = 消息链
- 一个类仅充当另一个类的中介= 中间人
- 一个类使用另一个类的方法和字段= 不适当的亲密关系
- 我安装的库不能满足我的所有需求= 不完整的库类
这些模式仅用于确定重构时需要查看的内容。每种模式都有相应的解决方案。您可以在此网站找到所有相关信息。
如果您愿意/可以多投入一点,我建议您购买“重构”书籍,因为它们比上面提到的网站有更多(更多)的例子,并且是一个很好的咨询来源。
文章来源:https://dev.to/rachc/refactoring-what-problem-on-your-code-do-you-want-to-fix-487f