Вместо того, чтобы заполнять все возможные условия в операторе while
,
// Always tests all conditions in loop header:
while( (condition1 && condition2) || condition3 || conditionN_etc ) {
// logic...
if (notable_condition)
continue; // skip remainder, go direct to evaluation portion of loop
// more logic
// maybe more notable conditions use keyword: continue
}
Некоторые программисты могут возразить, что лучше поставить условия через логику (т.е. не только внутри заголовка цикла) ииспользовать break
заявления, чтобы выйти в соответствующих местах.Этот подход обычно сводит на нет все остальные исходные условия, чтобы определить, когда выходить из цикла (т.е. вместо того, когда продолжать цикл).
// Always tests all conditions in body of loop logic:
while(true) {
//logic...
if (!condition1 || !condition2)
break; // Break out for good.
// more logic...
if (!condition3)
break;
// even more logic ...
}
В реальной жизни это часто более серая смесь, комбинация всех этих вещей, а не поляризованное решение идти тем или иным путем.
Использование будет зависеть от сложности логики и предпочтений программиста .. и, возможно, от принятого ответа этой темы :)
Также не забывайте о do
.. while
.Окончательное решение может использовать эту версию конструкции while
, чтобы изменить условную логику по своему вкусу.
do {
//logic with possible conditional tests and break or continue
} while (true); /* or many conditional tests */
В заключение, просто приятно иметь опции как программист.Так что не забудьте поблагодарить авторов вашего компилятора.