Coesão em arquitetura de software se refere ao grau em que os elementos de um módulo, como funções, classes ou componentes, estão relacionados e focados em uma única tarefa. Em outras palavras, um módulo coeso realiza um conjunto bem definido de responsabilidades e suas partes trabalham juntas para alcançar um objetivo comum.
Por que a coesão é importante?
- Facilidade de manutenção: Módulos coesos são mais fáceis de entender, modificar e testar, pois suas responsabilidades são claras e bem delimitadas.
- Reutilização: Módulos com alta coesão são mais propensos a serem reutilizados em outros projetos, pois suas funcionalidades são específicas e bem definidas.
- Reduz o acoplamento: Módulos coesos tendem a ter um menor acoplamento com outros módulos, o que significa que as mudanças em um módulo têm um menor impacto em outros.
- Melhora a legibilidade do código: Código coeso é mais fácil de ler e entender, pois cada parte do código tem um propósito claro.
Tipos de Coesão:
- Coesão funcional: Um módulo tem coesão funcional quando todas as suas partes contribuem para uma única função bem definida.
- Coesão sequencial: Quando a saída de uma parte do módulo é a entrada para a próxima parte.
- Coesão temporal: Quando as partes do módulo são executadas em um determinado momento ou em uma determinada sequência.
- Coesão lógica: Quando as partes do módulo realizam tarefas logicamente relacionadas, mas não necessariamente em uma sequência específica.
- Coesão coincidental: O pior tipo de coesão, onde as partes do módulo não têm nenhuma relação entre si.
Como alcançar alta coesão:
- Identificar responsabilidades: Defina claramente as responsabilidades de cada módulo.
- Evitar funções muito grandes: Divida funções grandes em funções menores com responsabilidades mais específicas.
- Nomear módulos de forma clara: Os nomes dos módulos devem refletir suas responsabilidades.
- Refatorar o código: Se um módulo não tiver alta coesão, refatore-o para melhorar sua organização.
Exemplo:
Imagine uma classe chamada Usuario
. Se essa classe contiver métodos para validar o login, calcular o salário e enviar e-mails, ela teria baixa coesão, pois essas responsabilidades são muito diferentes. Uma melhor abordagem seria criar classes separadas para cada uma dessas responsabilidades, como ValidadorDeLogin
, CalculadorDeSalario
e EnviadorDeEmails
.
Em resumo:
A coesão é um princípio fundamental em arquitetura de software que visa criar módulos com responsabilidades bem definidas e focadas. Ao alcançar alta coesão, os sistemas se tornam mais fáceis de entender, manter e evoluir.
Curso .NET 8 WEB API RESTful 2024 completa com EFCore 8
(agendamento de barbearia)
https://willianbarata.com/pagina-de-vendas/