The {Code} Naked

👻 OOP - Parte 1 - Acoplamento - Episódio 2

Mesmo sem usar nada, sua linguagem pode acoplar módulos inteiros no seu projeto — sem avisar. Neste episódio, mostramos como entender esse comportamento pode salvar seu código do inchaço invisível.

🎬 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.

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, a gente não só programa — a gente observa, compreende, projeta e cria. O código é só o último passo de um processo que começa na cabeça e termina no coração.

The {Code} Naked

Criar com clareza. Codificar com intenção.

The {Code} Naked

Ótimo! Você se inscreveu com sucesso.

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

Você se inscreveu com sucesso o The {Code} Naked.

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