参数是否过时

Are out-parameters out-dated?

本文关键字:过时 是否 参数      更新时间:2023-10-16

长期以来,我的直觉和实践一直是尽可能避免使用参数。我相信一个函数应该有一个逻辑目的,这通常意味着一种返回类型(不返回多个东西)。有时,返回多个内容是可取的(例如 std::map::insert)。我知道这可以作为对/元组或输出参数完成;使用其中哪一个的争论对我来说不太重要。

首选输出参数或返回值的概念、设计或性能原因是什么?

你是对的,out 参数并不是真正需要的,因为 RVO 使得按值返回变得可行,即使对于大型类型也是如此。必须返回多个东西要么是一种代码气味,要么可以合理地打包在一个结构中。

我想说,唯一剩下的原因,这是一个大问题,是一致性。如果该类已经有数十个按参数返回的方法,请坚持使用它(除非您:)可以自由重构的东西。

根据上下文,第三种选择可能是传递回调。如果被调用的函数"生成"多个值,则回调可能有多个方法。

虽然接受回调参数的函数并不真正符合"函数"的定义,但返回多个值的函数 IMO 也不符合。