Cohesión y Acoplamiento en la programación

A menudo, y a lo largo de tu carrera como desarrollador, vas a escuchar que lo ideal, es alcanzar un bajo acoplamiento y una alta cohesión entre las clases. Pero, qué significa esto exactamente? Para comprender esta frase, primero tenemos que estudiar los conceptos de forma individual.

¡Adquiere el Curso de Principios de Diseño de Software!

¿Qué tal aprender sobre los diferentes principios de Diseño de Software que permiten tener un mejor código? Esta entrada es solo una probada de lo que verás en El Camino Dev:

– Principios SOLID
– Patrones de Diseño
– Cursos de Programación Básica
– Cursos de Xamarin
– Cursos de Blazor
– Cursos de Infraestructura

¡Todo al precio más bajo por tiempo limitado!

¿Qué es el acoplamiento en Programación?

Este término, hace referencia al enlace entre dos o más componentes en un sistema, que es sumamente difícil de cambiar. ¿y cómo se crean estos enlaces? Bueno, seguramente has creado más de uno en una ocasión sin saberlo.

Comúnmente, el acoplamiento se da a través de la palabra mágica new, utilizada en múltiples lenguajes de programación, o bien, cuando se crea una nueva instancia de una clase.

El acoplamiento estrecho o alto acoplamiento, significa que las clases relacionadas, tienen múltiples enlaces creados, lo cual provoca que su mantenimiento se vuelva sumamente complicado, debido a que si existe algún cambio en una de estas clases, este cambio se propaga a lo largo del sistema, lo cual provoca que se vuelva potencialmente difícil de entender y mantener.

Por otra parte, el bajo acoplamiento, permite que las clases sean consumidas y probadas de forma independiente de otras clases.

¿Qué es la cohesión en Programación?

Ahora que sabemos qué es el acoplamiento, veamos el término cohesión, que es un término menos comprendido.  Anteriormente habíamos dicho, que los sistemas deben de intentar tener alta cohesión. La cohesión, se refiere a qué tan bien integrados se encuentran los elementos de una clase o módulo entre sí.

Esto puede sonar un poco confuso, pero veámoslo de forma gráfica.

En esta imagen, vemos los miembros de una clase internamente, es decir, podemos apreciar algunos campos y métodos que forman parte de la misma. Pero no sólo eso, sino que también vemos cómo los métodos utilizan ciertos campos que forman parte de la clase, he incluso, podemos ver cómo un método llamado Method2 utiliza un método privado llamado Method3.

Seguramente, con la mezcla de líneas puedas confundirte un poco, y hasta puedas pensar que la clase no tiene nada de malo, pero ordenemos los miembros un poco mejor.

Ahora que hemos ordenado los miembros de una clase, seguramente ya has notado que existen dos grandes grupos en esta clase.

Un primer grupo, que está conformado por un método que utiliza el campo A y el campo C, y un segundo grupo en que están relacionados el campo B, y los métodos 2 y 3. ¿Qué significa esta separación?

Significa, que el método1  y el método 2, que son los principales métodos en la clase, comparten muy poco en común, seguramente porque estamos dando múltiples responsabilidades a esta clase. Este problema es una indicación de que nuestra cohesión es baja, recuerda que nosotros queremos una alta cohesión ¿Qué podríamos hacer para solventar esta problemática?

Bueno, la solución sería dividir la clase en 2 clases, con lo cual, ambas lograrían tener una alta cohesión, ya que haciendo esto, los miembros de cada clase se integran de una mejor manera, tal como se ve en la siguiente Figura.

Espero que con esta explicación, este tema haya quedado más claro.

Deja un comentario

Tu dirección de correo electrónico no será publicada.