以下のコードを読みやすく、パフォーマンスの高いものにしようとしています。getFlagB()
何も繰り返さないようにしながら、不要な呼び出しを避けたいと思います。以下に 2 つのメソッドを記述しましたが、それぞれがこれらの基準の 1 つを正確に満たしています。
getFlagB()
いかなる方法でも変更できないと仮定します。追加のフラグを作成せずに、C でこれらの要件を同時に満たす方法はありますか?
// Method 1 - doesn't repeat code blocks but calls getFlagB even when it may not need to
void foo(int flagA)
{
int flagB;
getFlagB(&flagB);
if(flagA & flagB)
{
// Code block 0
}
else
{
// Code block 1
}
}
// Method 2 - doesn't no extra call to getFlagB, but repeats code block 1
void foo(int flagA)
{
int flagB;
if(flagA)
{
getFlagB(&flagB);
if(flagB)
{
// Code block 0
}
else
{
// Code block 1
}
}
else
{
// Code block 1
}
}