java - 在将大类重构为较小的类之前,您是否查看方法使用了哪些变量?

标签 java eclipse-plugin refactoring

<分区>

我有兴趣探索这样一种想法,即方法和它们使用的成员变量之间的关系可以暗示如何将类分解成更小的部分。这个想法是一组变量将与一个职责密切相关,并且应该根据 SRP 包含在一个类中。

举个简单的例子,类如下:

public class Rectangle {
  private int width; 
  private int height;
  private int red,green,blue;
  public int area() { return width * height; }
//just an example, didn't check the api.
  public Color color () { return new Color (red, green, blue); } 
}

应该重构为:

public class Rectangle {
  private Dimension size;
  private Color color;
  ...
}

因为分解会是:

面积:宽、高 颜色:红、绿、蓝

由于这些变量在同一个方法中使用,因此它们明显相关,可以单独成一个类。我知道这个例子可能太微不足道了,但请耐心等待,并尝试在这里想得更大。如果其他方法也使用这些变量,它们很可能也是相关的,也可以移到新类中。

只是为了好玩,我创建了一个小 plugin for Eclipse试图做到这一点。它将对 methods->variables,variables->methods 进行分解,并尝试将方法分组在一起,然后直接或间接使用变量。

这是您在编码时所做的事情吗?它真的有用吗?

最佳答案

我不能说这是我在编码时考虑过的事情。是的,它可能会带来一些改进,但我认为您在实践中会发现自己在做的是创建大量类,这些类处理起来会更加尴尬。

不过,作为“代码味道”,它可能有一些优点。如果您看到一个包含大量成员变量的类,并且大多数只被少数几个方法使用,这通常是一个不好的迹象。

关于java - 在将大类重构为较小的类之前,您是否查看方法使用了哪些变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802339/

相关文章:

java - 在 Project Explorer (Eclipse) 中查找项目位置

java - 如何通过我的插件访问 Eclipse 警告和错误消息?

python - 重构函数定义

c# - 重构以将 NameValueCollection 和 KeyValueConfigurationCollection 作为参数?

java - bean id 和引用类型之间的区别

java - 关于 Java String API 中的 split() 方法

java - Android 中的自定义进度条首选项问题

java - 当存在 XML 注释而不是元素时,Jackson XML 反序列化失败

eclipse-plugin - XQDT : where did Marklogic option go?

ruby-on-rails - 如何在一行中写条件语句? rails