好吧,我们来了。我的 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/