これがばかげた質問かどうかわからないので、もしそうなら私を撃ってください!
私はよく遭遇するこの「ジレンマ」を抱えています。C++ でオーバーロードされた関数を 2 つ言いました。
Fのこの 2 つのオーバーロードがあるとします (以下の疑似コードのみ)。
void F(A a, .../*some other parameters*/)
{
//some code part
//loop Starts here
G1(a,.../* some other parameter*/)
//loop ends here
//some code part
}
void F(B b, .../*some other parameters*/)
{
//some code part
//loop Starts here
G2(b,.../* some other parameter*/)
//loop ends here
//some code part
}
ここで、AとBは異なる型であり、G1とG2は異なることを行う異なる関数です。G1行とG2行を除くオーバーロードのコード部分は同じであり、非常に長くて広範囲に及ぶ場合があります。問題は、コードをより効率的に記述するにはどうすればよいかということです。当然のことながら、コードを繰り返さないようにしたいと考えています (単純なコピー ペースト ルーチンであるため、簡単に実行できる場合でも)。友人がマクロを提案しました...しかし、それは汚く見えます。これは簡単なことですか。なぜなら、私が今知るのは非常にばかげているからです。提案/ヘルプをいただければ幸いです。
編集:コード例が必要な方には申し訳ありません。コードをより短く/よりきれいにする方法を自問するさまざまな「同様の」状況に遭遇したため、質問は本当に抽象的なものでした。ほとんどの場合、コードは長いので、そもそもこれを尋ねることはありません。KilianDS が指摘したように、関数自体があまり長くないことを確認することも良いことです。しかし、これは避けられない場合もあります。私がこれに遭遇する多くの場合、ループはネストされていて(つまり、相互にいくつかのループがあります)、Fの開始はループの開始であり、Fの終了はそのループを終了します。
ホセ