返回还是不返回,是函数的问题!或者说,这真的很重要吗?
故事就这样开始了:
我曾经编写如下代码:
Type3 myFunc(Type1 input1, Type2 input2){}
但最近我的项目学院告诉我,我应该尽可能避免编写这样的函数,并建议采用以下方式,将返回值放在输入参数中。
void myFunc(Type1 input1, Type2 input2, Type3 &output){}
他们让我相信这更好更快,因为在第一种方法中返回时有额外的复制步骤。
对我来说,我开始相信第二种方法在某些情况下更好,特别是我有多个东西需要返回或修改。例如:以下第二行将比第一行更好更快,因为避免复制整个内容vecor<int>
回来时。
vector<int> addTwoVectors(vector<int> a, vector<int> b){}
void addTwoVectors(vector<int> a, vector<int> b, vector<int> &result){}:
但是,在其他一些情况下,我无法购买它。例如,
bool checkInArray(int value, vector<int> arr){}
肯定会比
void checkInArray(int value, vector<int> arr, bool &inOrNot){}
在这种情况下,我认为第一种直接返回结果的方法在可读性方面更好。
总之,我很困惑(重点是 C++):
- 函数应该返回什么,不应该(或尽量避免)返回什么?
- 有什么标准方法或好的建议可供我遵循吗?
- 我们能否在可读性和代码效率上都做得更好?
Edit:
我知道,在某些情况下,我们必须使用其中之一。例如,我必须使用return-type functions
如果我需要实现method chaining
. 因此,请重点关注可以同时应用这两种方法来实现目标的情况。
我知道这个问题可能没有单一的答案或确定的事情。此外,似乎这个决定需要在许多编码语言中做出,例如C
, C++
等等。因此,我们非常感谢任何意见或建议(最好有例子)。