Alta cohesión y bajo acoplamiento en la programación orientada a objetos

61

En el anterior artículo de esta serie, principios SOLID, revisamos los principios definidos para la construcción de software bajo la programación orientada a objetos en orden de crear código mantenible, escalable y reusable. Un concepto del cual también se habla es la alta cohesión y el bajo acoplamiento, tema que explicaremos un poco más a fondo en este artículo.

Alta cohesión

La cohesión en términos de Software, se refiere la medida de qué tanto un módulo de un sistema tiene una sola responsabilidad. Por ende, un módulo con alta cohesión será aquel que guarde una alta relación entre sus funcionalidades, mateniendo el enfoque a su único propósito. Nota cómo este concepto se relaciona bastante con el principio de responsabilidad única.

Bajo acoplamiento

El acoplamiento en términos de software, se refiere a la relación que se guardan entre los módulos de un sistema y la dependencia entre ellos. El bajo acoplamiento dentro de un sistema indica que los módulos no conocen o conocen muy poco del funcionamiento interno de otros módulos, evitando la fuerte dependencia entre ellos. Nota como este concepto se relaciona bastante con el principio de abierto/cerrado.

Beneficios

Al aplicar estos conceptos (junto con la implementación de principios y buenas practicas), lograremos un código de muy alta calidad al contar con los siguientes beneficios:

  • Legibilidad.- si se requiere analizar cierta funcionalidad estará enfocada a uno o muy pocos módulos de software.
  • Mantenibilidad.- los cambios que se requieran realizar en el código serán reducidos a un solo modulo en específico.
  • Reusabilidad.- los módulos bien definidos a un solo propósito pueden ser fácilmente reusados en otros segmentos de nuestro código.
  • Alta capacidad de prueba.- los módulos requeridos para realizar pruebas unitarias serán mínimos y bien delimitados.

Para aprender más de este tema puedes consultar los siguientes artículos (en inglés):

High Cohesion, Loose Coupling

What do low coupling and high cohesion mean? What does the principle of encapsulation mean?

Cohesion and Coupling: Principles of Orthogonal, Object-Oriented Programming

Comments

comments