У нас есть ситуация, когда разработчикам, работающим над устаревшей (основной) системой, оказывают давление на использование операторов GOTO при добавлении новых функций в существующий код, который уже заражен спагетти-кодом.
Теперь я понимаю, что могут быть аргументы в пользу использования "всего лишь одного маленького GOTO" вместо того, чтобы тратить время на рефакторинг на более удобное решение. Проблема в том, что этот изолированный "только один маленький ГОТО" не настолько изолирован. По крайней мере, раз в неделю или около того появляется новый "один маленький GOTO" для добавления. Эта кодовая база уже является ужасом для работы из-за кода, относящегося к или до 1984 года, который пронизан GOTO, который сделал бы много Pastafarians, полагая, что это вдохновленный самим Flying Spaghetti Monster.
К сожалению, язык, на котором он написан, не имеет готовых инструментов рефакторинга, поэтому он затрудняет продвижение "Refactor для повышения производительности позже", потому что кратковременные победы являются единственными выигрышами, которые здесь уделили внимание..
Кто-нибудь еще испытал эту проблему, когда все согласны с тем, что мы не можем добавлять новые GOTO, чтобы перевести 2000 строк в случайный раздел, но постоянно ли Anaylsts настаивают на том, чтобы делать это только один раз, и одобрение руководства?
TL;DR;
Как можно решить проблему, когда разработчики вынуждены постоянно добавлять заявления GOTO (добавив, я имею в виду добавить, чтобы перейти к случайным разделам на многие строки), потому что он "быстрее выполняет эту функцию"?
Я начинаю опасаться, что мы потеряем ценных разработчиков у хищников над этим...

Разъяснение:
Перейти к here
alsoThere: Нет, я говорю о виде goto, который перескакивает 1000 строк из одной подпрограммы в другую в середине цикла. Перейти к somewhereClose
there: Я даже не говорил о том, какие gotos вы можете разумно прочитать и определить, что делает программа. Перейти к alsoThere
somewhereClose: Это тот код, который делает фрикадельки midpoint: Если первый раз здесь Goto nextpoint detail: (каждый из них почти полностью отличается) Перейти к pointlessReturn
here: В этом вопросе я не говорил о том, что иногда можно использовать goto. Перейти к there
tacoBell:, и он только что вернулся к чертежной доске. Перейти к Jail
elsewhere: Когда требуется неделя аналитиков, чтобы дешифровать то, что программа делает каждый раз, когда она затрагивается, что-то глубоко не соответствует вашей кодовой базе. На самом деле, я на самом деле до моего hell:, если не обновленный goto 4, выдача спецификации goto detail pointlessReturn: goto tacoBell
Jail: Собственно, просто небольшое обновление с небольшой победой. Я потратил 4 часа на рефакторинг части этой конкретной программы на единую метку за раз, сохраняя каждую итерацию в svn по мере того, как я шел. Каждый шаг (около 20 из них) был небольшим, логичным и достаточно легким, чтобы перейти bypass nextpoint: спонтанно выскочить из вашей еды и на экран через какой-то странный вид магнетизма из спагетти-фрикадельки. Перейти к elseWhere
bypass: разумно проверить, что он не должен вводить какие-либо логические изменения. Используя эту новую, более читаемую версию, я сел с аналитиком и выполнил почти все эти изменения сейчас. Перейти к end
4: first *, если первый раз здесь goto hell, не второй, если первый раз здесь goto hell, нет третьего, если первый раз здесь goto hell четвертый теперь обновленный goto hell
end: