TheCodeNaked

Parâmetros são Injeção de Dependência: a verdade esquecida - Parte 2 (Copy)

Quando se fala em Injeção de Dependência, muita gente pensa logo em classesinterfaces e até em frameworks. Mas a verdade é bem mais simples do que isso. E aqui no The{Code}Naked, a gente gosta de lembrar que muitas vezes você já está usando um conceito — só não percebeu ainda.

Vamos tirar a roupa do conceito: parâmetros são, por natureza, uma forma de Injeção de Dependência.

O que é uma dependência?

É qualquer coisa que um código precisa para funcionar:

  • Um objeto (logger, repositório, configuração)
  • Um método (função ou procedimento)
  • Um valor
  • Um comportamento

Se você passa isso como argumento para uma função ou método, você está injetando a dependência. Simples assim.


Exemplo simples: uma função que recebe outra função


procedure ValidarEntrada(const AValor: string; AValidador: TFunc<string, Boolean>);
begin
  if AValidador(AValor) then
    ShowMessage('Valor válido')
  else
    ShowMessage('Valor inválido');
end;

A função ValidarEntrada não sabe como validar. Ela depende de um validador. Mas ela recebe esse comportamento de fora. Isso é Injeção de Dependência. Não tem container, não tem classe. Tem clareza.


Por que isso é importante?

Porque quando você entende o conceito no nível mais simples, você começa a escrever código mais limpo, mais testável e menos acoplado, mesmo sem usar nenhum padrão sofisticado.

  • Quer testar? É só passar uma função falsa.
  • Quer trocar o comportamento? Mude o parâmetro.
  • Quer isolar efeitos colaterais? Injete dependências puras.

Esse é o poder da simplicidade.


Injeção de Dependência é um princípio, não uma tecnologia

O problema é que muitos desenvolvedores são apresentados à DI através de frameworks pesados, containers complexos e termos rebuscados. Aí acreditam que só estão usando Injeção de Dependência se houver um grafo de objetos e uma classe mágica ligando tudo.

Mas se você escreve uma função que depende de outra função passada como parâmetro, você está aplicando DI no seu estado mais puro.


Conclusão nua e crua

A verdade é que você não precisa de um framework para aplicar boas práticas. Nem de uma buzzword pra justificar um código simples e claro.

Parâmetros são o primeiro degrau da injeção de dependência. Eles tornam seu código flexível, testável e legível. Não subestime o poder da simplicidade.

Aqui no The{Code}Naked, a gente acredita que entender os princípios é mais importante do que decorar padrões.

Injetar é entregar o poder de escolha ao código chamador. E isso é maturidade.

No próximo artigo: "Dependências explícitas são um ato de coragem".

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