Чтение кода не должно походить на чтение детективной книги (которую всегда нужно выяснить) ...
пример:
Java:
iterate_rows:
for (int i = 0; i < maxi; ++i)
{
for (int j = 0; j < maxj; ++j)
{
if (i == 4 < maxi && j == 3 < maxj)
break iterate_rows;
else
continue iterate_rows;
}
}
Вам не нужно выяснять, что делает брейк iterate_rows, вы просто читаете его.
C ++:
//iterate_rows:
for (int i = 0; i < maxi; ++i)
{
for (int j = 0; j < maxj; ++j)
{
if (i == 4 < maxi && j == 3 < maxj)
goto break_iterate_rows;
else
goto continue_iterate_rows;
}
continue_iterate_rows:;
}
break_iterate_rows:;
goto break_iterate_rows это просто видимая версия break iterate_rows
Если вы ограничите свое использование goto и меток только для этого вида кода, вы не будете выяснять намерения. Ограничение использования goto и меток для этого вида кода заставит вас просто читать код, а не анализировать или выяснять его. Вас не обвинят в том, что вы злой программист.
И если вы действительно ограничите свои goto в таком коде, вы сможете выработать привычку не выяснять, что эти чертовы goto делают в вашем коде. Дополнительным преимуществом является то, что вам не нужно вводить логические значения и отслеживать их (что, imho, приводит к обнаружению кода , делая его немного нечитаемым, что противоречит самой цели избегания gotos)
приписка
Соедините эти метки с комментариями (перед циклом), к тому времени, как вы прочитаете эти строки с помощью выражения goto, вы уже знаете цель этих gotos