Open In Colab

1.4. Cohesión#

La cohesión hace referencia al grado de relación entre los elementos de un módulo. En el diseño de una función, es importante pensar bien la tarea que va a realizar, intentando que sea única y bien definida.

Cuantas más cosas diferentes haga una función sin relación entre sí, más complicado será el código de entender. Existen por lo tanto dos tipos de cohesión:

  • La Alta Cohesión (Fuerte) que indica que la relación entre los elementos es baja. Es decir, no pertenecen a una única funcionalidad.

  • La Baja Cohesión (Débil):, que debe ser nuestro objetivo al diseñar programas. La cohesión fuerte indica que existe una alta relación entre los elementos existentes dentro del módulo.

Descripción de la imagen

1.4.1. Alta Cohesión (Fuerte):#

En este ejemplo, crearemos una clase llamada Calculadora que tiene métodos para realizar diferentes operaciones matemáticas. Todos los métodos están relacionados con la misma tarea principal: realizar cálculos matemáticos.

class Calculadora:
    def sumar(self, a, b):
        return a + b
    
    def restar(self, a, b):
        return a - b
    
    def multiplicar(self, a, b):
        return a * b
    
    def dividir(self, a, b):
        return a / b

En este caso, todos los métodos de la clase Calculadora están relacionados entre sí y se centran en la misma tarea: realizar operaciones matemáticas. Esto indica una alta cohesión, ya que todos los elementos de la clase están fuertemente relacionados y trabajan juntos para lograr un propósito común.

1.4.2. Baja Cohesión (Débil):#

En este ejemplo, crearemos una clase llamada Utilidades que tiene métodos para realizar operaciones matemáticas y operaciones de cadena de texto. Estos métodos realizan tareas completamente diferentes y no están relacionados entre sí.

class Utilidades:
    def sumar(self, a, b):
        return a + b
    
    def longitud_cadena(self, cadena):
        return len(cadena)

En este caso, los métodos sumar y longitud_cadena no están relacionados entre sí. Uno realiza una operación matemática mientras que el otro trabaja con cadenas de texto. Esto indica una baja cohesión, ya que los elementos de la clase Utilidades no están centrados en una única tarea o responsabilidad, sino que realizan tareas diferentes y no relacionadas.