是修改输入参数并返回错误的方法
本文关键字:错误 方法 返回 修改 输入 参数 | 更新日期: 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
不能被修改,所以你必须返回它的新实例。