История изменений
Исправление vbr, (текущая версия) :
А теперь сравни это с нормальным кодом:
int i = a;
while (i <= b) {
body;
if (i < INT_MAX) {
i = i + 1;
} else {
break;
}
}
Намного лучше и понятней получилось.
Вся проблема текущего for
в том, что он в одну строку засовывает три нетривиальные операции. И ещё заставляет не просто в одну строку их сувать, но и даже в одно выражение каждую. Это просто антипаттерн. Если ты напишешь в коде
int x = 0; y = 2; i++;
то тебя попросят переписать этот код.
Если ты напишешь в коде
int x = y = 2, i++, 3;
то может вообще встать вопрос о твоей адекватности и профпригодности (если, конечно, ты не пишешь код для соревнования по запутанному коду).
Но в for
это всё норма жизни почему-то считается…
Единственное, чем for
лучше while
в этой инкарнации - весь код, работающий с переменной цикла собран в одном месте, а также нельзя случайно сломать цикл с помощью continue
.
К слову, можно сделать так, решая эту проблему, забавно даже:
int i = a;
while (i < b) {
defer i = i + 1;
body;
}
Исправление vbr, :
А теперь сравни это с нормальным кодом:
int i = a;
while (i <= b) {
body;
if (i < INT_MAX) {
i = i + 1;
} else {
break;
}
}
Намного лучше и понятней получилось.
Вся проблема текущего for
в том, что он в одну строку засовывает три нетривиальные операции. И ещё заставляет не просто в одну строку их сувать, но и даже в одно выражение каждую. Это просто антипаттерн. Если ты напишешь в коде
int x = 0; y = 2; i++;
то тебя попросят переписать этот код.
Если ты напишешь в коде
int x = y = 2, i++, 3;
то может вообще встать вопрос о твоей адекватности и профпригодности (если, конечно, ты не пишешь код для соревнования по запутанному коду).
Но в for
это всё норма жизни почему-то считается…
Исходная версия vbr, :
А теперь сравни это с нормальным кодом:
int i = a;
while (i <= b) {
body;
if (i < INT_MAX) {
i = i + 1;
} else {
break;
}
}
Намного лучше и понятней получилось.
Вся проблема текущего for
в том, что он в одну строку засовывает три нетривиальные операции. И ещё заставляет не просто в одну строку их сувать, но и даже в одно выражение каждую. Это просто антипаттерн. Если ты напишешь в коде
int x = 0; y = 2; i++;
то тебя попросят переписать этот код.
Если ты напишешь в коде
int x = y = 2, i++, 3;
то может вообще встать вопрос о твоей адекватности и профпригодности (если, конечно, ты не пишешь код для соревнования по запутанному коду).
Но в for
это всё норма жизни почему-то…