|
| 1 | +Joshua Isaias Ruiz Lopez 21212363 |
| 2 | +# Refactorización Funcional vs. Refactorización Orientada a Objetos |
| 3 | + |
| 4 | +## 📌 Introducción |
| 5 | +La refactorización es una práctica fundamental en el desarrollo de software. Su objetivo es **mejorar la calidad interna del código** sin alterar su funcionalidad externa. |
| 6 | +Este proceso no busca añadir nuevas características, sino **hacer que el código existente sea más claro, eficiente, mantenible y escalable**. |
| 7 | + |
| 8 | +Dentro del mundo de la refactorización, existen distintos enfoques. Dos de los más comunes son: |
| 9 | + |
| 10 | +- **Refactorización Funcional**: basada en principios de programación funcional como inmutabilidad, funciones puras y composición. |
| 11 | +- **Refactorización Orientada a Objetos (OOP)**: basada en clases, objetos y encapsulación. |
| 12 | + |
| 13 | +En este documento se profundiza en cada uno de estos estilos, mostrando ejemplos, ventajas, limitaciones y su impacto en la calidad del software. |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## 🔹 Refactorización Funcional |
| 18 | + |
| 19 | +La programación funcional es un paradigma que trata el cómputo como la evaluación de funciones matemáticas. |
| 20 | +En este contexto, la **refactorización funcional** busca transformar el código hacia: |
| 21 | + |
| 22 | +- Uso de **funciones puras** (sin efectos secundarios). |
| 23 | +- **Inmutabilidad**: evitar modificar variables o estructuras de datos. |
| 24 | +- **Composición de funciones**: resolver problemas complejos combinando funciones pequeñas. |
| 25 | + |
| 26 | +Esto conduce a un código más **predecible, fácil de probar y menos propenso a errores**. |
| 27 | + |
| 28 | +### Ejemplo en Python (antes y después) |
| 29 | +```python |
| 30 | +# Código antes de refactorizar |
| 31 | +def calcular_total(productos): |
| 32 | + total = 0 |
| 33 | + for p in productos: |
| 34 | + total += p["precio"] |
| 35 | + return total |
| 36 | + |
| 37 | +productos = [{"precio": 10}, {"precio": 20}, {"precio": 30}] |
| 38 | +print(calcular_total(productos)) # 60 |
| 39 | + |
| 40 | + |
| 41 | +# Refactorizado en estilo funcional |
| 42 | +calcular_total = lambda productos: sum(p["precio"] for p in productos) |
| 43 | + |
| 44 | +productos = [{"precio": 10}, {"precio": 20}, {"precio": 30}] |
| 45 | +print(calcular_total(productos)) # 60 |
0 commit comments