midudev
Transcribed podcasts: 146
Time transcribed: 5d 4h 24m 1s
This graph shows how many times the word ______ has been mentioned throughout the history of the program.
¿Estás utilizando Switch por encima de tus posibilidades?
Puede ser.
Te voy a enseñar cómo puedes evitar utilizar Switch
y hacer que tu código sea mucho más mantenible y legible
pese a tener un montón de condiciones.
Vamos a verlo con un ejemplo.
Vamos a imaginarnos que tenemos la posibilidad
de tener un adversario de Marvel.
En este caso tenemos a Iron Man.
¿Y quién va a ser el que se va a enfrentar a ellos?
Pues es Loki.
Loki le vamos a dejar un string vacío
porque dependiendo del adversario
Loki se va a disfrazar de una cosa u otra.
Por ejemplo, si el adversario es Iron Man
Loki se va a disfrazar de Magneto.
Si en cambio el adversario es Hulk
lo que vamos a hacer es que Loki se va a disfrazar de Thanos.
Lo mismo si el adversario es Thor.
Que Loki ya sabe que Thor le tiene miedo a su padre.
Y bueno, si no es ninguno de estos adversarios
pues Loki va a ser Loki, simplemente.
Aquí vemos que tenemos una condición una detrás de otra.
Aquí mucha gente se ve como en la necesidad de decir
bueno, si tengo un if, un if, un if, un if
lo que tengo que hacer es refactorizarlo a un switch.
Es como la estructura que tengo que utilizar.
Y funcionar funciona.
¿Cómo sería esto?
Bueno, vamos a dejar el if por debajo
y vamos a escribir aquí el switch.
Un switch sería que dependiendo del adversario
en el caso de que sea Iron Man
vamos a hacer que Loki se disfrace de Magneto.
y rompemos ya aquí el caso.
En el caso de que fuese Hulk
por defecto vamos a hacer que Loki sea Loki.
Así que ya podríamos eliminar el if
y en este caso funcionar funcionaría.
En el caso de Iron Man tendríamos que es Magneto
el disfraze que tengo que utilizar.
Si esto lo cambiamos a Hulk
pues Hulk sería Thanos.
Vale, perfecto.
El switch funciona bien.
Pero ¿realmente hemos mejorado esto?
¿Es más legible?
Porque a mí me parece que estamos haciendo
más líneas de código.
Esto parece que ahora si tengo que añadir
un nuevo caso
además tendría que copiar tres líneas
solo para cambiar un string.
Bueno, hay una forma mucho mejor
de hacer esto de forma legible
más escalable
que te va a ayudar a que tu código
sea mucho más limpio.
Y esto es utilizando un simple objeto.
Utilizando una estructura de datos
que es el hash table
utilizando este string
que tenemos aquí en el adversario
como hash
o como índice
para nuestro objeto
podemos recuperar el valor
que realmente necesitamos.
¿Cómo podemos hacer esto?
Fácilmente.
Vamos a quitar el switch
y lo que vamos a crear
es una constante
que es Loki disfraze.
En el caso de que
el adversario sea Iron Man
hemos dicho que tendría que ser Magneto.
En el caso de que
el adversario sea Thor
tiene que ser Odin.
En el caso de que sea Hulk
pues tiene que ser Thanos.
En este caso
de utilizar las keys
en el caso de Iron Man
sí necesitamos que tengan quotes
que tengan las comillas
porque tenemos este guión aquí
que si no lo rompería.
Pero en el caso de Thor
y en el de Hulk
podemos dejarlo
sin las comillas.
Ahora que tenemos aquí
los Loki disfrazes
podríamos tener también
el valor por defecto
que queremos que tenga.
El Loki
default disfraz
¿vale?
Sería Loki
en sí mismo.
Ahora
este led
que teníamos aquí
esta variable
que inicializamos
con un string vacío
ya no es necesario.
¿Por qué?
Porque una vez que sabemos
el adversario
que es Hulk
lo que podemos hacer aquí
es
tener una constante
con Loki
donde vamos a intentar
recuperar
de Loki disfrazes
pasarle el adversario
acceder a esa posición
en el objeto
utilizándola aquí
del adversario
y en el caso
de que no la encuentre
vamos a utilizar
el Loki
default disfraz.
Ahora
con este cambio
de código
que hemos hecho aquí
si hacemos
un console.log
de Loki
vamos a ver
que tenemos fácilmente
ya el disfraz
que tenemos que utilizar.
En el caso de Hulk
si cambiamos
Iron Man
vamos a ver aquí
Magneto
y en el caso
de Thor
pues lo mismo.
Si es un adversario
que no estamos soportando
por ahora
pues nada
si ponemos por ejemplo
que se tiene que enfrentar
a lo vez no
pues Loki
por ahora
sigue siendo Loki.
Pero añadirlo
ahora es tan fácil
como añadir
una propiedad más
a nuestro objeto
por ejemplo
poner lo vez no
y aquí pues podríamos
poner también Magneto
porque es perfecto
Magneto en este caso.
De esta forma
lo que estamos haciendo
es simplificar
nuestro código
y ya ves
lo fácil que se lee
el tenerlo separado.
Además esto nos permite
exportar muy fácilmente
esta constante
y reutilizarla
en más de un sitio.
Esto no solo
es para este tipo
de casos
también podría ser
para tener
pues métodos
aquí podríamos tener
que en el caso
de tener
un aquí
pues podríamos tener aquí
métodos
que se ejecutasen
dependiendo de cada uno.
No hace falta
que sea un string
esto ya
depende de vuestro
tipo de
caso de uso
podríais encontrar
un montón de
funcionalidades
y ahora para ejecutar
esto lo que podríamos
hacer es una ternaria
si encontramos
esta posición
lo que podemos hacer
aquí con la ternaria
sería ejecutar
ese método
y si no
nos quedaríamos
todavía con el
que es por defecto.
Como ves
también podrían funcionar
funciones
dentro de este objeto.
Así que nada
espero que esto
te ayude
a generar mejor
código Javascript
si te ha gustado
dale like
y déjame en los comentarios
a ver si te gustaría
tener un vídeo más
sobre esto
me gustaría saber
qué piensas
así que
anímate
comenta
hasta luego
chao
que no se hace
ni un switch
o qué
etc.
o
hace
y
o
¡Gracias!