Да, вы можете [пере] писать программы без операторов прерывания (или возврата из середины циклов, которые делают то же самое). Но вам, возможно, придется ввести дополнительные переменные и / или дублирование кода, которые обычно затрудняют понимание программы. По этой причине Pascal (язык программирования) был очень плох, особенно для начинающих программистов. Ваш начальник в основном хочет, чтобы вы программировали в управляющих структурах Паскаля. Если бы Линус Торвальдс был на вашем месте, он, вероятно, показал бы вашему боссу средний палец!
Есть результат компьютерной науки, который называется иерархия структур управления Косараджу, которая восходит к 1973 году и упоминается в (более) известной статье Кнута о gotos от 1974 года. (Кстати, эта статья Кнута была уже рекомендована Дэвидом Торнли выше) .) То, что С. Рао Косараю доказал в 1973 году, заключается в том, что невозможно переписать все программы, имеющие многоуровневые разрывы глубины n, в программы с глубиной разрывов меньше, чем n, без введения дополнительных переменных. Но допустим, что это чисто теоретический результат. (Просто добавьте несколько дополнительных переменных ?! Конечно, вы можете сделать это, чтобы угодить своему боссу ...)
Что гораздо важнее с точки зрения разработки программного обеспечения, это более поздняя статья Эрика С. Робертса 1995 года под названием « Выход из цикла и структурированное программирование: возобновление дебатов» ( http://cs.stanford.edu/people/eroberts/papers/SIGCSE- 1995 / LoopExits.pdf ). Робертс суммирует несколько эмпирических исследований, проведенных другими до него. Например, когда группу студентов типа CS101 попросили написать код для функции, реализующей последовательный поиск в массиве, автор исследования сказал следующее о тех студентах, которые использовали break / return / goto для выхода из последовательный цикл поиска, когда элемент был найден:
Я до сих пор не нашел ни одного человека, который пытался запустить программу, используя [этот стиль], который дал неправильное решение.
Робертс также говорит, что:
Студенты, которые пытались решить проблему, не используя явного возврата из цикла for, чувствовали себя намного хуже: только семь из 42 студентов, пытающихся использовать эту стратегию, смогли найти правильные решения. Эта цифра представляет собой показатель успеха менее 20%.
Да, вы можете быть более опытным, чем учащиеся CS101, но без использования оператора break (или эквивалентного возврата / перехода из середины цикла), в конце концов вы напишите код, который, хотя номинально хорошо структурирован, достаточно сложен с точки зрения дополнительной логики Переменные и дублирование кода, что кто-то, вероятно, вы сами, добавите в него логические ошибки, пытаясь следовать стилю кодирования вашего босса.
Я также хочу сказать, что статья Робертса гораздо более доступна для среднего программиста, поэтому лучше читать ее сначала, чем книгу Кнута. Это также короче и охватывает более узкую тему. Вы могли бы даже рекомендовать это своему боссу, даже если он является менеджером, а не типом CS.