По моему мнению, эта версия кода наиболее четко передает поток программы потомкам и является наиболее легко расширяемой. Да, я использую 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();
}
}
Также, пожалуйста, см. мой канонический ответ для такого рода вопроса (и проголосуйте за него!)