Если вы не возражаете против циклов, содержащих несколько операторов break
, тогда единственная проблема заключается в том, что C (по очевидным причинам) не позволяет вам вырваться из голого блока, следовательно, это «не-цикл», который некоторые ничего не подозревающий будущий сопровождающий мог ошибиться для реального цикла.
соображения, я думаю, являются:
- если есть только две точки
break
, что так плохо о два if
заявления?
- Если есть более двух точек останова, то отступы с заявлениями
if
могут стать неприятными, и это экономит это, но опять же функция слишком много? И даже если нет, было бы лучше просто использовать goto
и избежать странности петли, которая не петляет?
Поскольку вы отметите этот язык агностик, я имел обыкновение использовать macroised язык ассемблера, с block
... endblock
, что вы могли бы вырваться из. Это приводит к достаточно хороший код для проверки необходимых условий, таких как:
block
breakif str1 == null
breakif str2 == null
get some combined property of str1 and str2
breakif some other condition that stops us getting on with it
get on with it
endblock
На самом деле, это было не breakif str1 == null
, это было breakifeq.p str1, null
, или что-то подобное, но я забыл, что именно.
В «что-то еще». Как именно мы должны судить об этом, если вы не определили «что-то еще»? – 2010-12-06 00:08:34
Я бы сказал, что это не лучше, чем поставить «goto» перед «некоторым окончательным кодом» и перейти к нему; по крайней мере, с goto ярлык явно. Этот код просто странный. – 2010-12-06 00:11:42
@ sje397 это может выглядеть как петля, но это не так. См. Условие цикла. – robert 2010-12-06 00:12:07