实现多个函数调用是不好的做法吗?

时间:2013-03-12 14:05:10

标签: c++ overloading

做这些事情不好吗? :

“只为调用其他函数创建函数是不是很糟糕?”

void pyRunScript(&o_Log, &o_Dict, ModuleName, *pDictArgs = NULL)
{
    pyRunScript(o_Log, o_Dict, ModuleName, "run", pDictArgs);
}

void pyRunScript(&o_Log, &o_Dict, ModuleName, FuncName, *pDictArgs = NULL)
{ ... }

请注意: 由于stackoverflow中的盒子宽度有限而无法忽略的数据类型
& o_表示此变量仅用于输出。

6 个答案:

答案 0 :(得分:4)

有一个只调用另一个函数的函数是不是很难?完全没有,如果它消除了重复,那么这是一种简单的方法。

答案 1 :(得分:2)

不,一般来说,制作仅调用其他功能的功能也是不错的,例如: “呼叫中心功能”,见代码完成史蒂夫麦康奈尔。

答案 2 :(得分:1)

使用默认调用不同函数的函数并不是一个坏习惯。 但如果没有添加最后的参数,那么特别使用相同的名称是不好的做法。如果我们说pDictArgs是char *

,它不仅会让用户感到困惑,而且也会让编译器感到困惑

我只是给函数名称一个“扭曲”,以便更容易区分:

void pyRunNamedScript(&o_Log, &o_Dict, ModuleName, FuncName, *pDictArgs = NULL)
{ ... }

答案 3 :(得分:1)

事实上,这种事情是重用代码的一种非常好的方法,不同的函数之间只有很小的差别。

非常好。

编辑: 大多数现代编译器都会内联这些“包装函数”,因此它根本不会增加任何开销。因此,将包装函数放入带内联的头文件中通常是有意义的,这样编译器就能够做到这一点。

答案 4 :(得分:1)

让函数调用另一个函数也不错。但是在这种情况下我可能会这样做:

void pyRunScript(&o_Log, &o_Dict, ModuleName, FuncName = "run", *pDictArgs = NULL)

答案 5 :(得分:0)

不是非法的,但总是提供一些额外的开销:这是调用函数成本,最好通过尝试内联函数来避免这种情况