El objetivo principal de las funciones no es solo reducir la duplicación de código, sino elevar el nivel de abstracción.
Por ejemplo, en lugar de escribir una función de ordenamiento en cada parte del código, podemos usar sort(), que:
✔ Oculta la implementación interna.
✔ Permite centrarnos en el resultado sin preocuparnos por los detalles del algoritmo.
Este enfoque simplifica el código y mejora la reutilización.
¿Qué es la abstracción?
La abstracción consiste en ignorar detalles innecesarios y enfocarse en la esencia de un problema.
✔ Un buen nivel de abstracción hace el código más claro y reutilizable.
✔ Demasiada abstracción puede hacer el código difícil de entender.
✔ Poca abstracción genera duplicación y código repetitivo.
La clave está en encontrar el equilibrio adecuado.
Las funciones de orden superior (como map(), filter() y reduce()) llevan la abstracción un paso más allá al permitir delegar comportamiento mediante funciones anónimas.
Ejemplos de malas abstracciones
La primera versión: Sin abstracción
Queremos una función que:
- Reciba un número.
- Devuelva "yes" si es par y "no" si es impar.
def check(number):
if number % 2 == 0:
result = 'yes'
else:
result = 'no'
return result
🤔 Problema: El concepto de "paridad" no está abstraído en una función separada, lo que dificulta la reutilización del código.
La segunda versión: Abstracción incorrecta
def is_even(number):
if number % 2 == 0:
return 'yes'
else:
return 'no'
def check(number):
result = is_even(number)
return result
Errores:
❌ La función is_even() mezcla la lógica de paridad con la salida del mensaje.
❌ Su nombre sugiere que devuelve un booleano, pero devuelve "yes" o "no".
✅ Solución
def is_even(number):
return number % 2 == 0
def check(number):
return 'yes' if is_even(number) else 'no'
- Ahora
is_even()solo evalúa si un número es par. - La función
check()se encarga del formato de salida, manteniendo el código más limpio.
Resumen
- El propósito de las funciones es mejorar la abstracción, no solo reducir la duplicación.
- Un exceso de abstracción puede hacer que el código sea innecesariamente complejo.
- Cada función debe reflejar un concepto bien definido y separado.
- Las funciones de orden superior permiten reutilización sin duplicación.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.