Java为参数分配新值,这被认为是一种不好的做法吗?

Posted

技术标签:

【中文标题】Java为参数分配新值,这被认为是一种不好的做法吗?【英文标题】:Java assigning a new value to a parameter, is this considered a bad practice? 【发布时间】:2011-02-27 14:20:26 【问题描述】:

我在这里阅读了这个问题:Is it problematic to assign a new value to a method parameter?。但是,我不清楚是否执行以下操作:

public void myMethod(Object obj) 
    doSomething(obj);
    obj = getNewObj();

或:

public void anotherMethod(Object obj) 
     obj = doSomething(obj):

这基本上只是为了避免声明一个新的局部变量,这值得吗?这是否被视为一种不好的做法?

【问题讨论】:

我想你明白这一点,但可以肯定的是:在你的两个示例方法中,对 obj 的分配根本没有完成任何事情,因为新对象后来没有在方法中使用。跨度> 是的,我知道,但感谢您的评论。 【参考方案1】:

这是一种不好的做法。您将很难找到牺牲可读性值得的场景。对于不了解 Java 的“按价值传递”政策的人来说,这将特别令人困惑,可悲的是很多人。

【讨论】:

从哪个人群中抽取的“很多人”?我认为这在很大程度上取决于上下文。重要的是继承我的代码的人的能力水平。在专业环境中编写代码时,我认为假设我的继任者知道如何传递方法参数是合理的。相比之下,我不会假设在将代码作为教程的一部分发布在游戏编程网站上时。 @meriton,我发现对于可能在专业领域非常有经验但对 Java 很陌生并且来自传递引用语言背景的程序员来说确实如此(至少在它是一种选择的情况下) . @meriton 我在一家大公司工作,遇到过很多不了解这个概念的专业 Java 开发人员。我不是想宽恕它,但在很多公司它是现实。 @meriton 我同意你的观点,假设你的继任者会理解基本的 Java 概念是公平的,但我只是看不到这种特殊情况下的回报。

以上是关于Java为参数分配新值,这被认为是一种不好的做法吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 aws amplify 和 @auth 装饰器将 GraphQL 突变设为私有吗?这被认为是一种安全的方法吗?

使用 Java 标准密钥库是一种不好的做法吗

使用 Java 的默认包是一种不好的做法吗?

使用没有花括号的 if 语句是一种不好的做法吗? [关闭]

为啥单身人士被认为是一种不好的做法? [复制]

使用动态是不是被认为是一种不好的做法?