🎬 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áusulauses
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ção: nã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ções, vantagens 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
(ouimport
) 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 uses
, import
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.