Я собираюсь не согласиться со всеми вами, молодые хищники, по этому поводу.
Использование return в середине метода, недействительного или нет, является очень плохой практикой по причинам, которые были довольно четко сформулированы почти сорок лет назад покойным Эдсгером В. Дейкстра, начиная с хорошо известного «Заявление GOTO, которое считается вредным. ", и продолжается в" Структурированном программировании "Даля, Дейкстры и Хора.
Основное правило состоит в том, что каждая структура управления и каждый модуль должны иметь ровно одну запись и один выход. Явный возврат в середине модуля нарушает это правило и значительно затрудняет рассуждение о состоянии программы, что, в свою очередь, значительно затрудняет определение правильности программы или нет (что является гораздо более сильным свойством. чем «работает он или нет»).
«Заявление GOTO считается вредным» и «Структурированное программирование» положили начало революции «структурированного программирования» 1970-х годов. Эти две части являются причиной того, что у нас сегодня есть if-then-else, while-do и другие явные управляющие конструкции, и почему операторы GOTO в языках высокого уровня находятся в списке исчезающих видов. (Мое личное мнение, что они должны быть в списке вымерших видов.)
Стоит отметить, что Модулятор потока сообщений, первая часть военного программного обеспечения, которая КОГДА-ЛИБО прошла приемочные испытания с первой попытки, без отклонений, отказов или словоблудия «да, но», была написана на языке, который даже не имел заявление GOTO.
Также стоит упомянуть, что Никлаус Вирт изменил семантику оператора RETURN в Oberon-07, последней версии языка программирования Oberon, сделав его конечной частью объявления типизированной процедуры (т. Е. Функции), а не исполняемый оператор в теле функции. В его объяснении изменения говорилось, что он сделал это именно потому, что предыдущая форма БЫЛА нарушением принципа одного выхода структурного программирования.