17. Estruturas de controle incomuns
Retorno antecipado quando ajuda, recursão com parada garantida e goto quase nunca.
Resumo
- Múltiplos returns: use se melhora a leitura. Cláusulas de guarda simplificam erros; minimize o total.
- Recursão: garanta que para; contador de segurança; só uma rotina recursiva (sem ciclos); cuidado com a pilha.
- Não use recursão para fatorial ou Fibonacci: laço é mais simples e rápido.
- goto: Dijkstra (1968) o considerou nocivo. Quase sempre há alternativa: if aninhado, variável de status, try-finally.
- Uso raro aceitável: limpeza de recursos em linguagem sem exceções. Ainda assim, só se for mais claro.
Perguntas-chave
responda de cabeça, depois abraO que é uma cláusula de guarda?
Um teste no início da rotina que retorna (ou lança) cedo nos casos de erro, deixando o caminho normal sem aninhamento.
Por que não usar recursão para fatorial?
Porque um laço simples é mais claro, mais rápido e não arrisca estourar a pilha.
Quando o goto pode ser aceitável?
Em casos raros, como limpar recursos em várias saídas de uma rotina numa linguagem sem exceções ou try-finally.
Exercícios de fixação
0/5 respondidas1.
Uma rotina tem 5 níveis de if aninhados só para checar erros antes do trabalho real. O capítulo sugere:
2.
Qual uso de recursão o livro desaconselha explicitamente?
3.
A rotina A chama B, que chama C, que chama A de novo. O livro recomenda:
4.
Quem publicou em 1968 a carta "Go To Statement Considered Harmful"?
5.
Para garantir que uma rotina recursiva não entre em ciclo infinito por dado corrompido, o livro sugere: