TheCodeNaked

OOP - Acoplamento - Episódio 2

Até sua linguagem está contra você. Mesmo que você use apenas uma única função de um módulo, muitas vezes o módulo inteiro é carregado. Isso depende de como o compilador, o linker ou o runtime da linguagem funcionam.

Introdução

Vamos agora expor alguns exemplos:

  • Delphi ou C++ tradicional
    A cláusula uses ou #include pode trazer todo o conteúdo da unit ou header para dentro do seu binário — mesmo que nada disso seja realmente utilizado.
  • Rust ou JavaScript moderno
    Ferramentas como Webpack ou Vite são mais espertas no empacotamento. Mas o acoplamento ainda existe. Ele só está mais bem disfarçado.

Experimento prático (Delphi)

  • Criei um novo projeto Delphi vazio, sem nenhuma linha de código adicional.
  • Compilei para Windows 64 – Release.
  • Resultado: 11,4 MB (11.984.896 bytes).

Depois, adicionei à cláusula uses todas as units necessárias para usar o TFDMemTable do FireDAC.

Atençãonão adicionei o componente no formulário, só as units.

  • Compilei novamente.
  • Novo resultado: 13,2 MB (13.869.056 bytes).

E o compilador?
Silêncio total. Nenhum aviso. Nenhum erro.

Mesmo sem usar nada dessas units, ou seja, nem coloquei o componente no formulário, tudo foi acoplado ao executável final.


De quem é a culpa?

Você pode dizer:

“Ah, isso é problema do compilador.”

Mas eu digo:

Não é. É problema seu.

É você quem precisa saber como sua linguagem funciona,
quais são suas limitaçõesvantagens e desvantagens.

Se você nem entende o que é acoplamento...
como vai perceber isso acontecendo no seu próprio código?


Resultado invisível, custo real

Provavelmente, seu código tem várias units que:

  • Não fazem nada
  • Só ocupam espaço no executável
  • Aumentam o consumo de memória
  • Tornam tudo mais lento

E o pior: você nem percebe.
Mas o cliente, o usuário e o desempenho sentem.


E o que dá pra fazer com isso?

A resposta é simples e brutal:

Você não pode evitar o acoplamento.
Mas pode entender onde ele começa e como controlar sua propagação.

Dicas práticas:

  • Evite usar uses (ou import) de módulos gigantescos só para usar uma função.
  • Prefira módulos pequenos, com responsabilidade única.
  • Crie interfaces e abstrações para reduzir o impacto das mudanças.
  • Use injeção de dependência com parcimônia — não como religião.
  • E principalmente: reconheça o acoplamento antes de combatê-lo.

O que é acoplamento de verdade?

Acoplamento real não é só quando um objeto chama o método de outro.

Acoplamento real acontece quando uma parte do seu código depende da existência, comportamento ou estrutura de outra parte — seja de forma explícita (como uma chamada direta) ou implícita (como uma importação silenciosa).

Acoplamento começa na primeira linha do seu projeto.
A diferença é se você está consciente disso… ou não.


Conclusão

Na próxima vez que digitar usesimport ou #include, lembre-se:

Você está abrindo a porta da sua casa para um pacote inteiro entrar.
Pode vir só uma função...
...ou pode vir um elefante junto.

E se der ruim, não adianta dizer que não foi você quem chamou.


No próximo episódio...

No próximo episódio da série, vamos aprofundar a ideia de acoplamento explícito e implícito:
Como identificar cada um, quais são os riscos, e como criar código que se acopla com inteligência — e não por inércia.


TheCodeNaked
Onde o código é exposto. Só não vê quem não quer.

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