当前位置: 首页 > 面试题库 >

修改传递给方法的对象的最佳实践是什么

农飞星
2023-03-14
问题内容

将对象传递给方法后,我想更改其字段之一。在Java中执行此任务的最佳实践是什么?


问题答案:

简单的答案

如其他答案所述,您可以简单地调用setter方法。

更多的哲学答案

通常,在除对象创建范围之外的范围内对对象进行突变可能很危险:

http://en.wikipedia.org/wiki/Functional_programming

就是说,在很多情况下,您只想在同一逻辑范围内封装逻辑位,就可以修改传入的对象的值。因此,我使用的规则是, 只要所有调用代码都完全意识到了这种突变
,您可以在将对象传递给该对象的方法中调用该对象的setter方法(如果没有,则应创建一个setter方法)。

通常,如果调用从代码库中多个位置更改参数的函数,您会发现它变得越来越容易出错,这就是为什么函数式编程会奏效的原因。

因此,这个故事的寓意是:如果您的调用者完全意识到了这种突变,则 可以 更改方法中的值,但通常应避免使用它,而应在其范围内进行更改已创建(或创建副本)。



 类似资料:
  • 假设我有一个大约有10个字段的应用程序类。在其他一些实用程序类中,我有下面两种方法之一。在这两种方法中,哪一种最好?是传递整个应用程序对象更好,还是只传递实用方法所需的对象更好?请解释原因。

  • 问题内容: 目前,我在隐藏的输入字段中回显某些变量,并在需要时使用Javascript读取它们。 我和一个同事现在正在考虑使用PHP生成一个额外的Javascript文件,该文件仅包含Javascript的所有变量。这样,变量已经存在,HTML中没有多余的代码。 有什么好的方法可以将变量从PHP传递到Javascript?我们的解决方案听起来如何? 问题答案: 通用数据传递 JavaScript常

  • 我正在AmazonEC2上运行docker-container。目前我已将AWS凭据添加到DockerFile。你能告诉我这样做的最好方法吗?

  • 问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu

  • 问题内容: 我正在构建一个基于expressjs的应用程序,我想在其中记录所有事件。我可以找到温斯顿,这似乎很酷。无论如何,我正在寻找一种方法将其连接到我的expressjs应用程序。 我还想要在应用程序内部登录。我的要求不是那么简单,所以我想将所有内容记录在我的应用程序中(不仅是请求)。 我目前的情况: server.js (我想在此级别记录http请求) 路线/something.js con

  • 我有一个巨大的表单,sumbit是从表单外部触发的 问题是,我需要有当前表单字段对象在按钮组件。我试图通过传递setState函数来传递多个层的状态: 还可以使用redux分派(在表单字段更改时)和按钮组件中的Selector来获取当前数据。但当我在输入字段中编写一些文本时,这两种方法似乎都会减慢应用程序的速度。 优化it的最佳解决方案是什么?