修改并返回传递的参数

jer*_*ome 2 java refactoring software-design

我的代码具有类似修改并返回传递的对象参数的方法。

在我看来,这就像一种糟糕的代码味道。

public class Creator {
  public MyClass create(MyClass param) {

    SomeClass attr1 = createAttr1();
    SomeClass attr2 = createAttr2();
    //... more creation

    param.setAttr1(attr1);
    param.setAttr2(attr2);
    //... set other created attributes.

    return param;
  }
}


public class MyApp {
  public static void main(String[] args) {
    Creator creatorProcesss = new Creator();
    MyClass myClass = new MyClass();
    myClass = creatorProcesss.create(myClass);
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有适当的方法来重构它?

Era*_*ran 5

您可以将方法的返回类型更改为void,用法将变为:

creatorProcesss.create(myClass);
Run Code Online (Sandbox Code Playgroud)

或者更好:

creatorProcesss.initialize(myClass);
Run Code Online (Sandbox Code Playgroud)

由于您的方法不会创建新实例,因此它会初始化传递的实例。

您还可以反转该过程 - 使用一个initialize方法来MyClass接受Creator参数并修改当前MyClass实例。

那么你main就会变成:

Creator creatorProcesss = new Creator();
MyClass myClass = new MyClass();
myClass.initialize(creatorProcesss);
Run Code Online (Sandbox Code Playgroud)