diff --git "a/docs/temas/Refactorizaci\303\263n funcional vs. refactorizaci\303\263n orientada a objetos/README.md" "b/docs/temas/Refactorizaci\303\263n funcional vs. refactorizaci\303\263n orientada a objetos/README.md" new file mode 100644 index 0000000..b3a4625 --- /dev/null +++ "b/docs/temas/Refactorizaci\303\263n funcional vs. refactorizaci\303\263n orientada a objetos/README.md" @@ -0,0 +1,45 @@ +Joshua Isaias Ruiz Lopez 21212363 +# Refactorizaci贸n Funcional vs. Refactorizaci贸n Orientada a Objetos + +## 馃搶 Introducci贸n +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. +Este proceso no busca a帽adir nuevas caracter铆sticas, sino **hacer que el c贸digo existente sea m谩s claro, eficiente, mantenible y escalable**. + +Dentro del mundo de la refactorizaci贸n, existen distintos enfoques. Dos de los m谩s comunes son: + +- **Refactorizaci贸n Funcional**: basada en principios de programaci贸n funcional como inmutabilidad, funciones puras y composici贸n. +- **Refactorizaci贸n Orientada a Objetos (OOP)**: basada en clases, objetos y encapsulaci贸n. + +En este documento se profundiza en cada uno de estos estilos, mostrando ejemplos, ventajas, limitaciones y su impacto en la calidad del software. + +--- + +## 馃敼 Refactorizaci贸n Funcional + +La programaci贸n funcional es un paradigma que trata el c贸mputo como la evaluaci贸n de funciones matem谩ticas. +En este contexto, la **refactorizaci贸n funcional** busca transformar el c贸digo hacia: + +- Uso de **funciones puras** (sin efectos secundarios). +- **Inmutabilidad**: evitar modificar variables o estructuras de datos. +- **Composici贸n de funciones**: resolver problemas complejos combinando funciones peque帽as. + +Esto conduce a un c贸digo m谩s **predecible, f谩cil de probar y menos propenso a errores**. + +### Ejemplo en Python (antes y despu茅s) +```python +# C贸digo antes de refactorizar +def calcular_total(productos): + total = 0 + for p in productos: + total += p["precio"] + return total + +productos = [{"precio": 10}, {"precio": 20}, {"precio": 30}] +print(calcular_total(productos)) # 60 + + +# Refactorizado en estilo funcional +calcular_total = lambda productos: sum(p["precio"] for p in productos) + +productos = [{"precio": 10}, {"precio": 20}, {"precio": 30}] +print(calcular_total(productos)) # 60