是修改输入参数并返回错误的方法

本文关键字:错误 方法 返回 修改 输入 参数 | 更新日期: 2023-09-27 18:33:37

我有以下代码:

public class MyClass
{
        ....
}
public static MyClass MyClassModifier(MyClass myinstance)
{
  ......
 return myinstance;
}

在我看来,返回 myinstance 实际上在这里并没有做任何事情,换句话说,这与上面的代码相同(只要 myinstance 没有分配给方法中的另一个对象):

public static void MyClassModifier(MyClass myinstance)
{
  ......
}

当然,我可以这样做:

public static MyClass MyClassModifier(MyClass myinstance)
{
  ......
  return new MyClass();
}

但这似乎很笨拙,如果 MyClass 的构造函数有很多参数,那么这就会变得非常笨拙,所以,问题是,哪一个更可取,为什么?

从函数式编程的角度来看,似乎最后一个是要走的路,但我不确定这是最好的方法。

是修改输入参数并返回错误的方法

修改输入参数并返回它们的方法是否不正确?

是的。它们具有误导性 - 客户端将假定您的方法读取输入参数,创建一个新对象并返回它。事实上,事实并非如此。返回值输入值,客户端无需捕获它。

关于你的第二个问题,你是应该改变输入值还是创建一个新值,答案在很大程度上取决于你想要实现的目标。没有任何上下文,就不可能给你一个更好的答案。

从函数式编程的角度来看,似乎最后一个是要走的路,但我不确定这是最好的方法。

是的,在函数式编程中,你想要不可变的状态 - 这意味着MyClass不能被修改,所以你必须返回它的新实例。