Estructuras de datos inmutables

12 September, 2020

Las estructuras de datos inmutables forman parte de los principios de la programación funcional y nos permite deshacernos del efecto de lado (side effect).

Estructuras de datos inmutables

Las estructuras de datos inmutables forman parte de los principios de la programación funcional y nos permite deshacernos del efecto de lado (side effect).

Es decir, nos evita que las variables (sobre todo las de tipo objeto) se modifiquen sin nuestro consentimiento evitándonos un montón de bugs al momento de desarrollar.

Llamamos una función que está relacionada con un objeto, y esta función modifica ese objeto.

const isca = {
	nombre: 'Israel',
	apellido: 'Castro',
	edad: 30
}

const cumple = persona => persona.edad++

Si ejecutamos cumple(isca), al valor de la edad se le sumará 1 y así tantas veces como lo hagamos.

Esto se debe evitar, o al menos en la mayoría de las ocasiones queremos hacerlo.

Funciones inmutables

Para solucionarlo debemos definir una función inmutable, creando un nuevo objeto en memoria.

const isca = {
	nombre: 'Israel',
	apellido: 'Castro',
	edad: 30
}

const cumpleInmutable = persona => ({
	...persona,
    edad: persona.edad + 1
})

El ...persona desglosa cada uno de los atributos (nombre, apellido, edad, …) y lo coloca en nuevo objeto.

De esta manera el objeto original (isca) sigue teniendo 30, puesto que nunca fue modificado y el nuevo objeto tendrá 31.

El único detalle es que para poder acceder a estos cambios, se deben guardar en otra variable, de lo contrario sólo se mostrarán en pantalla y no podremos acceder a este nuevo objeto.

const isca2 = cumpleInmutable(isca)

Ahora que lo pienso 🤔, ojalá así fuera en la vida real respecto a nuestra edad.

About me

Israel Castro

I do accountant stuff, and I am on the path to become a frontend web developer 💻.

Follow me: Twitter | Instagram