Control flow

Escopo: transversal. Aplica-se a qualquer linguagem ou stack do projeto.

A ferramenta de controle de fluxo certa depende de três perguntas: quantas condições existem, se elas mapeiam valores ou executam ações, e se o fluxo pode precisar sair antes do fim. O princípio que atravessa todas as respostas é o mesmo: saia cedo na falha e mantenha o caminho feliz sem aninhamento.

Conceitos fundamentais

ConceitoO que é
Guard clause (cláusula de guarda)Condição que retorna cedo na falha, antes do caminho feliz
Early return (retorno antecipado)Saída imediata que elimina o else e reduz profundidade de indentação
Arrow antipattern (pirâmide de condições)Aninhamento excessivo de if/else que enterra a lógica principal
ternary (ternário)Operador inline condição ? valorVerdadeiro : valorFalso; limitado a duas alternativas
Lookup table (tabela de mapeamento)Objeto, mapa ou dicionário que substitui chains de if para mapeamento de chave → valor
Fallthrough (queda entre casos)Execução automática do próximo case em switch; bug silencioso quando acidental
Exhaustiveness check (verificação de exaustividade)Garantia de que todos os casos de um tipo são tratados; o compilador avisa quando um falta
Circuit break (saída antecipada de laço)Encerramento do laço no primeiro resultado relevante, sem percorrer o restante

Quando usar cada ferramenta

A tabela segue ordem crescente de complexidade. Escolha sempre a ferramenta mais simples que resolve o caso.

FerramentaQuando usar
if/elseDois caminhos mutuamente exclusivos; nunca use else após um return
TernárioAtribuição de dois valores possíveis em uma linha; nunca aninhar
Guard clauseSaída antecipada na falha; mantém o caminho feliz sem indentação extra
Lookup / Map / DictionaryMapeamento estático de chave → valor com 3 ou mais entradas; substitui if/else chain
switch / match / whenTrês ou mais casos sobre o mesmo valor; ação por caso ou mapeamento com exaustividade garantida
Circuit break (find, some, any)Busca ou verificação que para no primeiro match; não percorre o restante
for / for-in / foreachIteração com efeito colateral por item; sem índice quando o índice não é usado
whileCritério de parada por condição, sem coleção pré-definida
do-whilePrimeira execução garantida antes de verificar a condição

Veja também

Cada linguagem tem o guia específico com os construtores nativos e exemplos BAD/GOOD:

JavaScript · TypeScript · C# · VB.NET · Python · Go · PHP · Kotlin · Swift · Dart · Rust

DoDocs v3.7.0 · Desenvolvido por @thiagocajadev · Baseado no trabalho de pmndrs/docs · Poimandres.