Software Architecture Lab
Voltar para conceitos
FundamentosIniciante8 min

Acoplamento

Acoplamento mede o quanto dois módulos dependem um do outro. Quanto mais alto, mais difícil mudar um sem quebrar o outro.

Resumo

Acoplamento é a medida de quanta informação um módulo precisa ter sobre outro para funcionar. Quanto mais íntima essa dependência, maior o acoplamento — e maior o risco de uma mudança em A quebrar B sem aviso.

Acoplamento alto não é necessariamente ruim: é ruim quando esconde-se onde você não esperava. Sistemas saudáveis tornam o acoplamento explícito e o concentram em pontos controlados (interfaces, contratos, fronteiras).

Problema que resolve

Sem atenção ao acoplamento, o sistema vira um emaranhado: trocar um banco de dados exige mexer em controllers, mudar o formato de uma resposta de API obriga a alterar o componente que a usa, atualizar uma biblioteca quebra dezenas de arquivos. Cada decisão fica cara porque "tudo está conectado a tudo".

Exemplo simples

Componente conhece o fetch
function ListaUsuarios() {
  const [users, setUsers] = useState([]);
  useEffect(() => {
    fetch("/api/users")
      .then(r => r.json())
      .then(setUsers);
  }, []);
  return users.map(u => <p key={u.id}>{u.nome}</p>);
}
Componente recebe o que precisa
function ListaUsuarios({ users }) {
  return users.map(u => (
    <p key={u.id}>{u.nome}</p>
  ));
}
 
// quem chama injeta os dados:
const users = await getUsers();
<ListaUsuarios users={users} />

No primeiro caso, o componente está acoplado à fonte dos dados (sabe que vem do /api/users, sabe que é JSON). No segundo, ele só sabe renderizar — quem busca e como busca é problema de outro lugar.

Mapa gravitacional do acoplamento

Módulos com acoplamento alto são como buracos negros — quanto mais forte a dependência direta, mais próximo o satélite fica do centro, mais difícil é mudá-lo de posição.

Mapa de Acoplamento — Módulo Central● Campo Gravitacional
força do acoplamento
Quanto mais perto do núcleo, mais rígida e arriscada é a dependência.
DatabaseTMailerTLoggerMCacheMHttpClientLConfigLUserController6 dep.
Acoplamento Rígido
Acoplamento Médio
Acoplamento Fraco

Linhas sólidas = alto acoplamento · Passe o mouse para inspecionar

Sinais de acoplamento alto

  • Pequenas mudanças exigem editar muitos arquivos não relacionados aparentemente.
  • Testar uma parte exige montar quase o sistema inteiro.
  • Você teme atualizar uma dependência porque "vai quebrar tudo".

Conceitos relacionados

Conteúdos relacionados