修改传递给方法的对象的最佳实践是什么
问题内容:
将对象传递给方法后,我想更改其字段之一。在Java中执行此任务的最佳实践是什么?
问题答案:
简单的答案
如其他答案所述,您可以简单地调用setter方法。
更多的哲学答案
通常,在除对象创建范围之外的范围内对对象进行突变可能很危险:
http://en.wikipedia.org/wiki/Functional_programming
就是说,在很多情况下,您只想在同一逻辑范围内封装逻辑位,就可以修改传入的对象的值。因此,我使用的规则是, 只要所有调用代码都完全意识到了这种突变
,您可以在将对象传递给该对象的方法中调用该对象的setter方法(如果没有,则应创建一个setter方法)。
通常,如果调用从代码库中多个位置更改参数的函数,您会发现它变得越来越容易出错,这就是为什么函数式编程会奏效的原因。
因此,这个故事的寓意是:如果您的调用者完全意识到了这种突变,则 可以 更改方法中的值,但通常应避免使用它,而应在其范围内进行更改已创建(或创建副本)。