Eu vou discordar de todos vocês, jovens whippersnappers neste aqui.
Usar o retorno no meio de um método, vazio ou não, é uma prática muito ruim, por razões que foram articuladas de forma bastante clara, quase quarenta anos atrás, pelo falecido Edsger W. Dijkstra, começando na conhecida "Declaração GOTO Considerada Nociva ", e continuando em" Programação Estruturada ", de Dahl, Dijkstra e Hoare.
A regra básica é que cada estrutura de controle, e cada módulo, deve ter exatamente uma entrada e uma saída. Um retorno explícito no meio do módulo quebra essa regra e torna muito mais difícil raciocinar sobre o estado do programa, o que por sua vez torna muito mais difícil dizer se o programa está correto ou não (o que é uma propriedade muito mais forte do que "se parece funcionar ou não").
"Declaração GOTO considerada Nociva" e "Programação Estruturada" deram início à revolução da "Programação Estruturada" nos anos 1970. Essas duas partes são os motivos pelos quais temos if-then-else, while-do e outras construções de controle explícitas hoje, e por que as instruções GOTO em linguagens de alto nível estão na lista de espécies ameaçadas. (Minha opinião pessoal é que eles precisam estar na lista de Espécies Extintas.)
É importante notar que o modulador de fluxo de mensagem, o primeiro software militar que SEMPRE passou no teste de aceitação na primeira tentativa, sem desvios, renúncias ou palavreado "sim, mas", foi escrito em uma linguagem que nem tinha uma declaração GOTO.
Também vale a pena mencionar que Nicklaus Wirth mudou a semântica da instrução RETURN em Oberon-07, a versão mais recente da linguagem de programação Oberon, tornando-a uma peça final da declaração de um procedimento digitado (ou seja, função), em vez de um declaração executável no corpo da função. Sua explicação da mudança disse que ele fez isso precisamente porque o formulário anterior ERA uma violação do princípio de uma saída da Programação Estruturada.