1) Проверка состояния входа или объекта . Следующий код:
void function() {
if( condition ) {
//do some stuff
return;
}
//do other stuff
}
хорошо, когда условие - это какое-то требование для работы функции. Это этап проверки ввода или проверки состояния объекта. Тогда он считает правильным использовать немедленный возврат к выделению, эта функция вообще не запускалась.
2) Многоступенчатая обработка . Хотя / continue хорошо, когда цикл извлекает элементы из некоторой коллекции и обрабатывает их многоступенчато:
while(foo = bar.getNext()) {
if(foo.empty())
continue;
if(foo.alreadyProcessed())
continue;
// Can we take a shortcut?
if(foo.tryProcessThingsYourself())
continue;
int baz = foo.getBaz();
if(baz < 0) {
int qux = foo.getQux();
if(qux < 0) {
// Error - go to next element
continue;
}
}
// Finally -- do the actual processing
baz = baz * 2;
foo.setBaz(baz);
}
Пример показывает, насколько естественно использовать continue в сценарии, когда выполняется серия многоступенчатой обработки, когда каждая обработка может быть прервана различными условиями в разных местах.
Обратите внимание: Плинтус опубликовал реальный пример, который следует тому, что говорит 2).
3) Общее правило . Я использую continue и return , когда это соответствует факту, что что-то было прервано. Я использую else , когда else является частью фактической обработки.