Эдсгер Дейкстра считал оператор goto вредным в программировании по нескольким причинам:
- Запутанный и неудобочитаемый код. 1 По тексту такого кода практически невозможно понять порядок исполнения и взаимозависимость фрагментов. 1
- Сложности с проверкой формальной корректности. 1 Для кода без goto её проверить легче. 1
- Трудности с форматированием. 1 Код с goto трудно форматировать, так как он может нарушать иерархичность выполнения, и отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. 1
- Проблемы с логикой исполнения программы. 1 Некоторые способы применения goto могут создавать ошибки, например, если переход в точку после инициализации, но до использования, приведёт к выбору произвольного и случайного значения. 1
Таким образом, Дейкстра утверждал, что оператор goto «попросту слишком примитивен» и создаёт слишком сильное побуждение внести путаницу в программу. 3