gpt4 book ai didi

parameter-passing - "pass by reference"是糟糕的设计吗?

转载 作者:行者123 更新时间:2023-12-03 10:55:21 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




所以,我刚开始学习Java,发现根本没有“引用传递”这回事。我正在将应用程序从 C# 移植到 Java,原始应用程序具有整数和 double 值,它们是“ref”或“out”参数。

起初我以为我可以传入“整数”或“ double ”,因为那是引用类型,所以值会改变。但后来我了解到这些引用类型是不可变的。

所以,然后我创建了一个“MutableInteger”类和一个“MutableDouble”类,并将它们传递给我的函数。它有效,但我想我必须违背该语言的原始设计意图。

一般糟糕的设计是“通过引用传递”吗?我应该如何改变我的思维方式?

有这样的功能似乎是合理的:

bool MyClass::changeMyAandB(ref int a, ref int b)
{
// perform some computation on a and b here

if (success)
return true;
else return false;
}

这是糟糕的设计吗?

最佳答案

如果您将代码构造成干净、可理解的抽象,那么面向对象的编程是最好的。

数字,作为一种抽象,是 不可变 并拥有 无身份 (即“五”始终是“五”,并且没有“五的多个实例”之类的东西)。

您试图发明的是一个“可变数字”,它是可变的并且具有身份。这个概念有点笨拙,最好用 对问题建模。更有意义的抽象 (对象)比那个。

考虑代表某物并具有特定界面的对象,而不是单个值 block 。

关于parameter-passing - "pass by reference"是糟糕的设计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com