Selección de Mascota Aleatoria en JavaScript

Clase 53 de 84Curso Gratis de Programación Básica

Resumen

A medida que amplíes tu conocimiento en programación, encontrarás más y mejores herramientas para resolver problemas y que el código fuente tenga una mejor calidad y optimización.

Optimización de funciones

No pensar bien cómo programar la lógica de un software puede causar problemas en el futuro de escalabilidad, o sea, de dificultad para que la aplicación siga creciendo.

Una función que realiza un cálculo para seleccionar un dato aleatorio dentro de muchos valores. La siguiente función tendrá problemas si el día de mañana, en lugar de 3 mokepones, la aplicación tiene miles.

function seleccionarMascotaEnemigo() {
    let mascotaAleatoria = aleatorio(0, 3);  // 3 mokepones, mañana podrían ser 1000
    
    // Un IF por cada mokepon tampoco es escalable
    if (mascotaAleatoria == 1) {
        spanMascotaEnemigo.innerHTML = 'Hipodoge';
    } else if (mascotaAleatoria == 2) {
        spanMascotaEnemigo.innerHTML = 'Capipepo';
    } else {
        spanMascotaEnemigo.innerHTML = 'Ratigueya';
    }
}

Gracias a los arreglos, puedes obtener un mokepon aleatorio a través de la cantidad total del array con la función mokepones.length. Utilizar esta información para obtener un índice aleatorio y utilizar ese dato del arreglo.

function seleccionarMascotaEnemigo() {
    // Obtenemos un índice aleatorio dentro de la cantidad de datos del array
    let mascotaAleatoria = aleatorio(0, mokepones.length - 1);
    
    // No requerimos de un IF por cada elemento
    spanMascotaEnemigo.innerHTML = mokepones[mascotaAleatoria].nombre;
}

Observa que el código fuente quedó más limpio y reducido. Has logrado resolver el mismo problema, en menos cantidad de líneas de código.

Tener menos cantidad de líneas de código, no necesariamente es un indicativo de calidad de código, pero siempre es posible buscar mejores formas de escribir software y que el código sea más legible.


Contribución creada por: Kevin Fiorentino (Platzi Contributor)