2011-02-10

нашел неожиданное применение для continue

Есть в С/С++ такой частый паттерн, как цикл без тела.
while (*dest++ = *src++);
while (i != end && *i++ < 5);
Он заслуженно считается антипаттерном -- если забыть точку с запятой, можно огрести. Кроме того, сама фраза звучит как-то неокончено. Альтернативные варианты этих циклов выглядят как то громоздко:
while (*dest = *src) {
  ++dest; ++src;
}
while (i != end)
  if (!(*i++ < 5))
     break;
Нашел альтернативу:
while (*dest++ = *src++)
  continue;
while (i != end && *i++ < 5)
  continue;

И выглядит закончено (пока что-то делается, продолжать), и забытая точка с запятой приведет к синтаксической ошибке.

Комментариев нет:

Отправить комментарий