Java 长参数列表,其中一组参数可以分组到现有类,但这些参数不是从对象收集的
下面的代码是长参数列表气味方法Java 长参数列表,其中一组参数可以分组到现有类,但这些参数不是从对象收集的,java,design-patterns,Java,Design Patterns,下面的代码是长参数列表气味方法 // Long Parameter List Smell public void paint (Graphics gr, double x, double y, double width, double height, Boolean shouldValidate){.....} 下面的代码是调用上述气味的调用方方法 // Caller public void someMethod(.
// Long Parameter List Smell
public void paint (Graphics gr,
double x, double y, double width, double height,
Boolean shouldValidate){.....}
下面的代码是调用上述气味的调用方方法
// Caller
public void someMethod(......){
double x = someMethod();
double y = 200;
double width = 100;
double height = width/2;
paint(gr, x, y, width, height, true);
}
我们可以注意到,参数double x、double y、double width和double height听起来像一个矩形对象。这些参数不是从对象收集的,因此我们不能使用“保留整个对象”。下一个选项是引入参数对象。然而,已经存在类Rectangle2D.Double,它是Java库中现有的类
我应该将这些参数分组到Rectangle2D.Double的对象中吗?重构后的代码如下所示。如果可以这样重构的话。我可以称这种重构为什么
// Long Parameter List Smell
public void paint (Graphics gr,
Rectangle2D.Double rec
Boolean shouldValidate){.....}
// Caller
public void someMethod(......){
double x = someMethod();
double y = 200;
double width = 100;
double height = width/2;
paint(gr,
new Rectangle2D.Double(x, y, width, height),
true);
}
那么:
public void someMethod(......){
Rectangle2D.Double rect = new Rectangle2D.Double(someMethod(), 200, 100, 50);
paint(gr, rect, true);
}
??只是有点不同,但可能更容易阅读
要回答您关于术语的问题,如何合并参数对象