在我看来,这个版本的代码最清楚地向后代传达了程序流程,并且最容易扩展。是的,我正在使用break
. 我想不出任何不这样做的真正理由。
while(true)
{
if (condition1)
{
something();
break;
}
if (condition2)
{
somethingDifferent();
break;
}
mostOfTheWork();
}
如果你真的不想使用break
,你可以使用goto
退出循环,或者使用return
退出函数(如果这个循环是你必须重构的更大函数的一部分)。
while(true)
{
if (condition1)
{
something();
goto exit;
}
if (condition2)
{
somethingDifferent();
goto exit;
}
mostOfTheWork();
}
exit:
或者
while(true)
{
if (condition1)
{
something();
return;
}
if (condition2)
{
somethingDifferent();
return;
}
mostOfTheWork();
}
如果你拒绝使用除了 if 和 while 之外的任何流控制,这个怎么样:
bool ok = true;
while(ok)
{
if (condition1)
{
something();
ok = false;
}
if (ok && condition2)
{
somethingDifferent();
ok = false;
}
if (ok)
{
mostOfTheWork();
}
}
另外,请参阅我对此类问题的规范答案(并投票!)