我正在尝试使以下代码既可读又高性能。我想避免任何不必要的电话,getFlagB()
同时也不重复任何事情。下面我写了两种方法,每一种都完全满足这些标准之一。
假设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
}
}