devterview_$ iniciar simulação

Guard clauses x aninhamento profundo de if

FácilJúniorLegibilidade

Pergunta

Por que 'return cedo' com guard clauses costuma ler melhor do que um `if` grande aninhado que envolve o corpo inteiro da função?

Resposta esperada

Guard clauses tratam os casos de saída (entrada inválida, sem permissão, lista vazia) logo no início e retornam, deixando o resto da função no caminho feliz, sem indentação. O `if` que envolve tudo empurra o corpo pra dentro de vários níveis, obriga o leitor a manter na cabeça as condições até o `else` lá embaixo, e faz o caso de erro (o `else`) ficar longe da condição que o causou. Com guards, cada pré-condição fica ao lado do seu tratamento, o nível de indentação fica plano, e o fluxo principal se lê de cima a baixo. O cuidado é não espalhar `return` no meio de lógica complexa — guards são pra pré-condições no topo.

Por que perguntam isso

Pergunta júnior/pleno. Sinal bom: notar que guards são pra pré-condições no topo, não pra espalhar return no meio da lógica.

#guard-clauses#aninhamento#legibilidade
publicidade

Relacionadas