[Arquitetura] Coupling, o inimigo em comum - Parte 4

E para finalizar nosso papo sobre “Coupling, o inimigo em comum” vamos falar de coesão, claro! Coesão são as partes que devem ser contidas no mesmo módulo, ou seja, um acoplamento que faz sentido. Funcionalidades parecidas e que se complementam devem estar próximas umas das outras.

Tenha em mente que sempre que separamos um módulo com coesão, estamos aumentando o acoplamento. Com isso vamos dar uma olhada nos tipos de coesão que existem:


Functional Cohesion

Quando todas as partes do módulo se relacionam fazendo com que o módulo tenha tudo para funcionar.

Sequential Cohesion

Quando dois módulos interagem de maneira que o output de um vira o input do outro.

Communicational Cohesion

Quando dois módulos operaram juntos para criar um output.

Procedural Cohesion

Quando dois módulos devem ser executados em uma ordem específica.

Temporal Cohesion

Quando módulos trabalham juntos de forma temporária para servir um outro módulo.

Logical Cohesion

Quando módulos compartilham uma lógica de operação e não dados.

Coincidental Cohesion

Quando os componentes do módulos não fazem nada juntos, apenas estão agrupados no mesmo lugar.


Como podemos ver, seus tipos são extremamente semelhantes com os tipos de coupling (até porque não deixa de ser), mas com essa lista ordenada dos itens de maior para os de menor coesão, já conseguimos refletir em como estamos organizando nosso código a fim de aumentar a coesão e diminuir o acoplamento. Tenha sempre este objetivo em mente, manter o código mais coeso e com menos acoplamento possível.

Por hoje é só!