好吧,我们来了。我的 C++ 书对另一个建议的做法有意见。它说“返回值(非空)函数不应将引用类型作为参数。”所以基本上如果你要实现这样的功能:

int read_file(int& into){
   ...
}

并使用整数返回值作为某种错误指示符(忽略我们有异常的事实)那么该函数就会写得很糟糕,它实际上应该像
void read_file(int& into, int& error){

}

现在对我来说,第一个更清晰,更易于使用。如果您想忽略错误值,您可以轻松地做到这一点。但本书建议后者。请注意,本书并没有说返回值函数是不好的。而是说你应该只返回一个值或者你应该只使用引用。

你对此有何看法?我的书满是废话吗? (再次)

最佳答案

这个建议很愚蠢。直接返回值要小得多且更易于键入。

直接退货:

if (read_file(...)) {
    ... handle problem ...
}

间接返回:
int status;

read_file(..., status);
if (status) {
    ... handle problem ...
}

编辑:更大的问题是是否完全使用非 const 引用参数。参数中出现副作用可能会令人惊讶。一种编码标准说引用参数应该是 const 并且输出参数应该使用指针。这样读者在调用时会得到一个 & ,它大喊“这个参数发生了一些事情”。

关于c++ - int foo(type&bar);是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2639199/

10-09 23:30