TheCodeNaked

Evite o uso de "else": escreva código que pensa como você fala (Copy)

Como inverter sua lógica mental pode deixar seu código mais limpo, direto e elegante.


Ao escrever código, é natural pensarmos como falamos:

"Se der certo, faça isso; senão, faça aquilo."

Essa forma de pensar nos leva automaticamente a usar estruturas if ... else, porque parece reproduzir a forma como tomamos decisões no dia a dia. Mas essa abordagem, embora intuitiva, costuma resultar em código mais verboso, mais indentado e, como o tempo, mais difícil de manter.

Vamos a um exemplo clássico:

if Valido(Cliente) then
  ProcessarPedido(Cliente)
else
  MostrarErro('Cliente inválido.');

O problema? Mesmo que a verificação de validade falhe, o programa ainda precisa percorrer visualmente o bloco inteiro antes de entender que o pedido não será processado. O foco é mantido na opção positiva, quando na verdade deveríamos eliminar o que não interessa logo de cara.

Agora veja essa alternativa:

if not Valido(Cliente) then
begin
  MostrarErro('Cliente inválido.');
  Exit;
end;

ProcessaPedido(Cliente);

Essa técnica é conhecida como "early return" ou "guard classe", e sua essência é simples: trate logo os casos em que você não quer continuar. Ao se livrar do que não interessa no início, você limpa o caminho para o fluxo principal do seu algoritmo.


Benefícios de evitar o else:

  • Menos indentação: Código menos aninhado é mais fácil de ler.
  • Mais clareza: O leitor entende rapidamente o que precisa acontecer.
  • Facilidade de manutenção: Menos blocos, menos pontos de erro.
  • Fluxo direto: Seu código mostra primeiro o que deve ser descartado e depois o que importa.

Antes e depois: exemplos reais

  1. Processamento de arquivo com if ... else:
if FileExists(NomeArquivo) then
  CarregarArquivo(NomeArquivo)
else
  MostrarErro('Arquivo não encontrado.');
  1. Processamento de arquivo com early return:
if not FileExists(NomeArquivo) then
begin
  MostrarErro('Arquivo não encontrado.');
  Exit;
end;

CarregarArquivo(NomeAraquivo);
  1. Acesso autenticado com if ... else:
if UsuarioAutenticado then
  ExibirDashboard
else
  RedirecionarParaLogin;
  1. Acesso autenticado com early return:
if not UsuarioAutenticado then
begin
  RedirecionarParaLogin;
  Exit;
end;

ExibirDashboard;

E quanto a outros controles de fluxo?

Esse pensamento também pode ser aplicado em outras estruturas, como case, for, while e até mesmo em try ... except. Vamos ver alguns exemplos:

  • Dentro de for loops:
for I := 0 to Lista.Count -1 do
begin
  if not ItemValido(Lista[I]) then
    Continue; // Pula direto para o próximo item

  ProcessarItem(Lista[I]);
end;
  • Com try ... except:
try
  ConectarBanco;
  ProcessarConsulta;
except
  on E: Exception do
  begin
    LogarErro(E.Message);
    Exit; // Não segue se houve erro
  end;
end;

FinalizarProcessamento;

Note como essa abordagem evita que o fluxo normal do programa fique "escondido" dentro de blocos longos e aninhados.


Conclusão

Pense no seu código como uma conversa consigo mesmo. Em vez de perguntar "e se der certo?", comece perguntando: "e se der errado?". Ao tratar logo os desvios e encerrar os fluxos desnecessários, você ganhará em clareza, elegância e produtividade.

Esse tipo de escrita não é apenas uma questão de estilo: é uma forma de comunicar suas intencionalidades como programador com muito mais eficiência.

Sobre o autor

TheCodeNaked

No TheCodeNaked, programar é consequência, não ponto de partida. Antes do código, vem a dúvida, a análise, o contexto. Não seguimos fórmulas — questionamos. Criar software é pensar com clareza. O resto é só digitação.

TheCodeNaked

Criar com clareza. Codificar com intenção.

TheCodeNaked

Ótimo! Você se inscreveu com sucesso.

Bem-vindo de volta! Você acessou com sucesso.

Você se inscreveu com sucesso o TheCodeNaked.

Sucesso! Verifique seu e-mail para acessar com o link mágico.

As suas informações de faturamento foram atualizadas.

Seu pagamento não foi atualizado