La cohesión describe qué tan bien están relacionadas entre sí las responsabilidades de un módulo o clase. Un módulo con alta cohesión tiene una única responsabilidad clara y todas sus funciones están estrechamente relacionadas con esa responsabilidad.
Tipos de cohesión:
- Cohesión débil (baja): El módulo realiza múltiples tareas no relacionadas. Esto aumenta la complejidad y dificulta su comprensión, mantenimiento y reutilización.
- Cohesión fuerte (alta): El módulo se centra en una sola responsabilidad. Es más fácil de entender, mantener, probar y reutilizar.
Ejemplo de cohesión débil:
def suma():
a = float(input("Introduce el primer número: "))
b = float(input("Introduce el segundo número: "))
print("La suma es:", a + b)
Esta función:
- Solicita entrada al usuario.
- Convierte los datos.
- Realiza la suma.
- Imprime el resultado.
Realiza varias tareas que podrían dividirse para mejorar la cohesión.
Mejora: cohesión fuerte
def suma(a, b):
return a + b
# Otro módulo puede encargarse de la interacción con el usuario
def pedir_numeros_y_mostrar_resultado():
a = float(input("Introduce el primer número: "))
b = float(input("Introduce el segundo número: "))
resultado = suma(a, b)
print("La suma es:", resultado)
Ahora, la función suma()
tiene una sola responsabilidad: sumar dos números. Esto la hace más reutilizable en distintos contextos (por ejemplo, sin entrada de usuario).
Ventajas de la cohesión fuerte:
- Reducción de la complejidad: Cada módulo tiene una única tarea bien definida.
- Mejora en la reutilización: Es más fácil reutilizar módulos bien definidos en otros programas.
- Facilidad de mantenimiento: Los cambios en una parte del código son más predecibles y localizados.