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
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>);
}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.
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
- Separação de Responsabilidades — pré-requisito para baixar acoplamento sem virar caos.