1

こうしたことをするのは悪いことですか。:

「他の関数を呼び出すためだけの関数を作るのは悪いことですか?」

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_ は、この変数が出力専用であることを意味します。

4

6 に答える 6

4

もう少し情報があれば別の関数を呼び出すだけの関数を持つのは悪いことですか? 重複を排除するのであれば、それを達成するための簡単な方法です。

于 2013-03-12T14:07:57.587 に答える
2

いいえ、一般的に、「コール センター関数」など、他の関数のみを呼び出す関数を作成することは悪くありません。Steve McConnell の Code Complete を参照してください。

于 2013-03-12T14:08:01.490 に答える
1

関数が別の関数を呼び出すだけであることは悪くありません。ただし、この場合、おそらく次のようにします。

void pyRunScript(&o_Log, &o_Dict, ModuleName, FuncName = "run", *pDictArgs = NULL)
于 2013-03-12T14:09:42.330 に答える
1

実際、この種のことはコードを再利用するための非常に優れた方法であり、異なる機能間でわずかな違いしかありません。

完全に良い。

編集:最新のコンパイラのほとんどは、これらの種類の「ラッパー関数」をインライン化するため、オーバーヘッドがまったく追加されません。このため、ラッパー関数をインラインでヘッダーファイルに配置して、コンパイラーがそれを実行できるようにすることは、多くの場合理にかなっています。

于 2013-03-12T14:09:12.873 に答える
1

デフォルトで別の関数を呼び出すだけの関数を持つことは悪い習慣ではありません。ただし、最後のパラメーターを追加しない場合に、同じ名前を特別に使用するのは悪い習慣です。ユーザーが混乱するだけでなく、コンパイラにとっても混乱を招く可能性がありpDictArgsます

区別しやすくするために、関数名に「ひねり」を加えます。

void pyRunNamedScript(&o_Log, &o_Dict, ModuleName, FuncName, *pDictArgs = NULL)
{ ... }
于 2013-03-12T14:08:46.647 に答える
0

違法ではありませんが、常に余分なオーバーヘッドが発生します。これは関数の呼び出しコストです。必要に応じて関数をインライン化することで、これを回避することをお勧めします。

于 2013-03-12T14:51:45.370 に答える