TheCodeNaked

O IF ainda vive — Episódio2: Negue o IF — mas com propósito — Early Return com Negação

Ao observar o código do novo compilador do TypeScript, algo chama atenção: todos os if usam negação, e não há nenhum else. Estamos falando de Early Return com negação — uma técnica que inverte a lógica para interromper o fluxo o mais cedo possível, liberando o restante do código para seguir limpo.

Introdução

A ideia por trás do Early Return está no próprio nome: ficar o mais próximo possível do return. Em vez de prender o fluxo em if...else, você trata os casos inválidos logo no início e libera o caminho principal.


Exemplo tradicional

Regra de negócio: se o saldo for maior que 10.000, o empréstimo é aprovado. Caso contrário, é reprovado.

if Saldo > 10000 then
  EmprestimoAprovado
else
  EmprestimoReprovado;

Com Early Return e negação

if not (Saldo > 10000) then
  Exit(EmprestimoReprovado);

EmprestimoAprovado;

Note: o else desapareceu.
O fluxo inválido é interrompido no topo, e o caminho válido segue naturalmente.

Simples, direto e legível. Mas... o if ainda está ali. Preciso fazer ele desaparecer? Depende.

A regra de negócio está "incrustada"

Nesse exemplo, a lógica está dentro do código. Se ela mudar, é preciso alterar, compilar e redistribuir. Mas sejamos honestos: isso não é um problema — ao contrário do que alguns defendem para justificar a "fuga do if".

Com ou sem if, regras codificadas exigem recompilação. Simples assim.

Mas no TheCodeNaked vamos além.

Você vai ver como mudar regras sem recompilarsem redistribuir —
mas por enquanto... segure essa ideia. A gente ainda vai chegar lá.


Sumindo com o if (mas sem mágica)

DisponibilizarEmprestimo(ProcessaAnalise(Saldo));

Agora temos um método que decide se o empréstimo deve ser liberado, baseado no resultado de uma função:

function ProcessaAnalise(Saldo: Currency): Boolean;
begin
  Result := Saldo > 10000;
end;

E podemos compor de forma ainda mais elegante:

if DisponibilizarEmprestimo(ProcessaAnalise(Saldo)) then
  ShowMessage('Seu empréstimo foi aprovado')
else
  ShowMessage('Infelizmente, seu empréstimo não foi aprovado');

Onde queremos chegar?

Você não codificou diretamente a regra.
Você passou uma decisão.

A lógica Saldo > 10000 pode estar em outro lugar:
– numa função externa
– numa estratégia
– numa tabela
– ou até ser carregada dinamicamente

if não morreu. Ele só saiu do palco. Mas continua no script.

➕ Alternativa com atribuição direta

Disponivel := Saldo > 10000;
DisponibilizaFinanciamento(Disponivel);

Concisa e funcional — mas não é Early Return.
Atribui o resultado, mas não interrompe o fluxo.

Em algumas linguagens, é essencial garantir que variáveis estejam inicializadas antes do uso. Nem toda linguagem faz isso por você.

Outra abordagem: delegar a decisão

E quando o que muda não é só o valor, mas a forma de decidir?

DisponibilizarCredito(ProcessaAnalise);

Aqui, a lógica foi transferida para fora.
ProcessaAnalise pode ser uma função, uma estratégia, uma injeção de dependência. O if ainda existe — mas está encapsulado, isolado, intercambiável.

É como perguntar:

"Devo liberar?"

Em vez de afirmar:

"Se for maior que 10, libere."

Mas atenção: negar sempre, só se fizer sentido

Não transforme tudo em uma negação not <condição>.

Evite duplas negações ou condições que exigem interpretação filosófica:

if ((not isValid) and (not isExpired)) then
  Exit;
Isso não é clareza — é confusão.

Reflexão TheCodeNaked-style

Não existe uma única forma de decidir. A melhor abordagem depende de:

  • seu contexto
  • seu time
  • linguagem
  • nível de clareza necessário
  • e da sua responsabilidade pela manutenção futura

Situação Abordagem Ideal
Decisão simples e direta Atribuição booleana
Validação com ação imediata Early Return
Interface com duas ações claras if...else
Crescimento ou lógica variável Função externa / Injeção de decisão

Conclusão

Early Return é uma ferramenta poderosa — mas nem sempre é a melhor escolha.

Às vezes, atribuir já basta. Outras vezes, delegar é melhor ainda. O importante não é eliminar o if. É garantir que, quando ele aparecer, ele faça sentido — e seja visto com clareza.

TheCodeNaked não diz “negue sempre”. Mas se for negar, que seja com lucidez. E se for decidir, que seja com propósito.

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