Módulo 13 - Abstração e modularidade: código que dura
Acoplamento e coesão: a saúde de um módulo
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026
O que você vai aprender
- Entender acoplamento como o grau de dependência entre módulos.
- Entender coesão como o grau de foco de um módulo num único assunto.
- Mirar baixo acoplamento e alta coesão ao dividir o código.
- Reconhecer sinais de módulos grudados ou dispersos demais.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Acoplamento e coesão: a saúde de um módulo.
Os objetivos desta aula. Entender acoplamento como o grau de dependência entre módulos. Entender coesão como o grau de foco de um módulo num único assunto. Mirar baixo acoplamento e alta coesão ao dividir o código. Reconhecer sinais de módulos grudados ou dispersos demais.
Veja o essencial, parte por parte.
Duas medidas da divisão. Acoplamento é o quanto as peças dependem umas das outras. Quanto menor, melhor.
Por que isso decide o custo de mudar. Essas duas medidas não são teoria bonita: elas decidem o quanto dói mudar o programa.
Como reduzir acoplamento e subir a coesão. Baixar acoplamento: conversar por interface enxuta, nunca fuçar a estrutura interna do vizinho.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Duas medidas da divisão
Dividir em módulos é o começo, mas dá para dividir mal. Duas peças podem ficar em arquivos separados e ainda assim viver grudadas, uma espiando os detalhes internos da outra a cada passo. Para julgar se a divisão ficou boa, a engenharia usa duas medidas. A primeira é o acoplamento: o quanto os módulos dependem uns dos outros. Muito acoplamento é como um grupo em que cada pessoa precisa perguntar tudo para as outras antes de agir; qualquer mudança numa exige avisar e ajustar as demais. Baixo acoplamento é o oposto: cada peça sabe o mínimo sobre as outras e conversa por uma interface enxuta.
A segunda medida é a coesão: o quanto um módulo é focado num único assunto. Alta coesão significa que tudo dentro dele trabalha para o mesmo objetivo, como um módulo de cálculo de impostos que só cuida de impostos. Baixa coesão é a gaveta de tranqueira: um módulo chamado utilidades que tem uma função de data, uma de e-mail, uma de desconto e mais um punhado de coisas sem parentesco. As duas medidas andam juntas na direção certa: você quer módulos muito focados por dentro (alta coesão) e pouco dependentes por fora (baixo acoplamento). Esse é o retrato de um código fácil de mudar.
Por que isso decide o custo de mudar
Essas duas medidas não são teoria bonita: elas decidem o quanto dói mudar o programa. Com alto acoplamento, uma alteração pequena vira um efeito dominó. Você mexe num módulo, isso quebra o vizinho que dependia de um detalhe seu, que por sua vez quebra um terceiro. Um dia de trabalho para uma mudança que deveria ser trivial. Com baixa coesão, você nem acha onde mexer, porque a lógica está espalhada em gavetas sem lógica. Já com baixo acoplamento e alta coesão, mudar uma regra é ir ao módulo focado naquele assunto, alterar ali, e pronto: como ninguém dependia dos detalhes internos, nada mais quebra. A meta prática é sempre puxar o código para esse lado.
🎮 Jogo da aula
Saudável ou doente?
Classifique cada situação de código como Bom (baixo acoplamento, alta coesão) ou Ruim (alto acoplamento ou baixa coesão).
Como reduzir acoplamento e subir a coesão
Melhorar as duas medidas tem receitas concretas. Para baixar o acoplamento, faça os módulos conversarem por interfaces pequenas em vez de mexerem nas tripas uns dos outros, e passe os dados de que a peça precisa em vez de deixá-la ir buscar sozinha em toda parte. Para subir a coesão, junte no mesmo módulo o que trata do mesmo assunto e tire de lá o que não pertence; a gaveta utilidades é o sinal de que faltou dar nome aos assuntos. Um bom truque de coesão é o teste do nome: se você não consegue batizar o módulo com um substantivo claro, provavelmente ele faz coisas demais. Nomes fáceis costumam indicar módulos focados.
Teste rápido
Um módulo chamado utilidades reúne uma função de formatar data, uma de enviar e-mail e uma de calcular desconto. Qual é o problema?
Perguntas frequentes
- Qual a diferença entre acoplamento e coesão?
- Acoplamento é uma relação entre módulos: o quanto um depende do outro. Coesão é uma qualidade interna de um módulo: o quanto ele é focado num assunto só. Um mede o de fora (ligações entre peças), o outro mede o de dentro (foco da peça). O alvo é acoplamento baixo e coesão alta.
- Por que baixo acoplamento é melhor que alto?
- Porque com baixo acoplamento você muda uma peça sem arrastar as outras. Com alto acoplamento, cada mudança vira efeito dominó: mexer num módulo quebra os vizinhos que dependiam dos seus detalhes. Menos dependência entre peças significa menos coisas quebrando quando você precisa evoluir o código.
- Alta coesão pode ser exagerada?
- O risco maior é o oposto, a baixa coesão. Mas dá para fragmentar demais e acabar com muitos módulos minúsculos, o que aumenta o número de peças a acompanhar. O equilíbrio é agrupar o que é do mesmo assunto num módulo com nome claro, sem picar em pedaços tão pequenos que a visão do todo se perca.
- Como percebo que dois módulos estão acoplados demais?
- Sinais típicos: uma peça mexe direto nas variáveis internas da outra, mudar um módulo obriga a mudar vários outros, e para entender um você precisa ler o código de vários. Se as peças só conversassem por uma interface enxuta, essas amarras não existiriam. O efeito dominó ao mudar é o alarme principal.
- O que é a tal gaveta utilidades e por que evitar?
- É um módulo genérico onde se joga qualquer função solta: data, e-mail, texto, cálculo, tudo junto. Ele tem baixa coesão porque não trata de um assunto, trata de tudo um pouco. Isso dificulta achar as coisas e nomear o módulo. O melhor é separar por assunto, dando a cada função um módulo focado.
- O teste do nome funciona mesmo?
- É um bom indício rápido. Se você consegue batizar o módulo com um substantivo claro (impostos, frete, autenticação), ele tende a ser coeso. Se o melhor nome que aparece é vago como utilidades ou geral, provavelmente o módulo mistura assuntos e vale separar. O nome não prova nada sozinho, mas costuma denunciar a bagunça.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.