Глава 17. Использование continue, break и ?:

Continue и break

Continue и break - это тот же самый goto, только названы по-другому. Именно поэтому они рассмотрены в этой части документа.

Как и goto, continue и break творят всякие разные чудеса в коде, поэтому их использование рекомендуется свести до минимума. Одним мановением руки читатель кода переносится бог знает куда по какой-то незадокументрированной причине. При использовании continue возникают две проблемы:

Пример

Представим себе ситуацию, где имеют место обе проблемы:

while (TRUE)         
{
   ...
   // Много кода
   ...

   if (/* какое-то условие */) {
      continue;
   }
   ...

   // Много кода
   ...
   if ( $i++ > STOP_VALUE) break;
}

Note: "много кода" нужно для того, чтобы программист не смог легко отследить проблему.

Из приведённого выше примера мы можем составить себе следующее правило: использование continue и break в одном блоке - прямая дорога к багам.

?:

Проблема обычно заключается в том, что люди пытаются запихать слишком много кода между ? и :. Вот несколько правил:

Пример

(условие) ? funct1() : func2();

or

(условие)
    ? длинный блок
    : ещё один длинный блок;