我试图让下面的代码既可读又高效。我想避免对 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
}
}
最佳答案
你可以这样做:
void foo(int flagA)
{
int flagB;
if(flagA)
{
getFlagB(&flagB);
if(flagB)
{
// Code block 0
return ;
}
}
// code block 1
}
关于c - 没有不必要执行的可读条件逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757122/