OOP vs FP es uno de los paradigmas más hablados en la programación. Pero primero ¿Qué era un paradigma?
Un paradigma de programación es un enfoque para resolver problemas usando algún lenguaje de programación o también podemos decir que es un método para resolver un problema usando herramientas y técnicas que están disponibles para nosotros siguiendo algún enfoque.
Okay, entonces nos podemos quedar con que es un ‘enfoque’ o ‘método’ para resolver problemas al programar. Guay!🤠
Pero ¿Cuáles son las principales diferencias? 🤔 Pues, aquí traigo una chuleta 🥩 de emergencia!
-
Secuencia de operaciones.
-
Sus 'Inputs' son los 'outputs' de otras operaciones y 'outputs' que produce serán los 'inputs' para la siguiente operación.
-
Por defecto, ninguna rama de codigo puede afectar otras.
-
Separa la 'data' y las operaciones, evitando efectos secundarios y escribiendo funciones puras.
-
Las funciones no modifican el mundo exterior en el que se encuentran y su resultado dependerá del argumento dado.
-
Las funciones son ciudadanos de primera categoría.
-
Organiza el software en base a 'data' u 'objetos', no funciones y lógica.
-
Organiza el código como una unidad.
-
Esta basada en los siguientes principios:
- Encapsulación -> la implementación y estado de cada objeto es mantenido dentro de su clase. Otros objetos no pueden acceder a ellos.
- Abstracción -> los objetos solo revelan mecanismos internos que sean relevantes a otros objetos, ocultando código innecesario.
- Herencia -> relaciones y subclases entre objetos pueden ser reasignadas, permitiendo a los desarrollaores reutilizar una lógica común y al mismo tiempo mantener una jerarquía.
- Polimorfismo -> los objetos pueden tomar mas de una forma dependiendo del contexto (esto lo determinará el programa o su utilización)
Lecturas interesantes:
-
Anjana Vakil: Aprendiendo Programación Funcional con JavaScript — JSUnconf 2016
-
When programming, where should I use OOP and FP? What are the pros and cons of which approach?
✨¡Espero que te haya ayudado!✨