<分区>
我有兴趣探索这样一种想法,即方法和它们使用的成员变量之间的关系可以暗示如何将类分解成更小的部分。这个想法是一组变量将与一个职责密切相关,并且应该根据 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 进行分解,并尝试将方法分组在一起,然后直接或间接使用变量。
这是您在编码时所做的事情吗?它真的有用吗?