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 突变设为私有吗?这被认为是一种安全的方法吗?