MALAS PRACTICAS

Codigo ultra-reducido

No hagas el código lo más corto posible e irreconocible.

MALA PRACTICA

<script>
  i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
</script>  

CODIGO LEGIBLE

<script>
// Asigna un valor a i en función de ciertas condiciones
i = (i !== null && i !== undefined) ? 
      (i < 0) ? 
          // Si i es negativo, asegúrate de que len + i no sea menor que 0
          Math.max(0, len + i) 
      : 
          // Si i no es negativo, mantén su valor actual
          i 
  : 
      // Si i es null o undefined, asigna 0
      0;
</script>  

Si escribes de esa forma ultra-reducida, tu y cualquier desarrollador que se encuentre esta línea e intente entender cuál es el valor de i la va a pasar muy mal, buscando una respuesta o funcionamiento.

Variables de una letra

Otra forma de programar de manera INCORRECTA es usando variables de una sola letra en todas partes. Como a, b o c.

Una variable corta desaparece en el código como lo hace un ninja en un bosque. Nadie será capaz de encontrarla usando “buscar” en el editor. E incluso si alguien lo hace, no será capaz de “descifrar” el significado de a o b.

Una variable exótica como el contador de un bucle es especialmente IMPORTANTE si el cuerpo del bucle toma 1-2 pantallas. Entonces si alguien mira en las profundidades del bucle, no será capaz de figurarse rápidamente que la variable llamada x es el contador del bucle.

MALA PRACTICA

<script>
  let a, b, c;

  a = 5;
  b = 10;
  c = a * b;
  console.log(c);
</script>  
    

CODIGO CORRECTO

<script>
  let precioUnitario, cantidad, total;

  precioUnitario = 5;
  cantidad = 10;
  total = precioUnitario * cantidad;

  console.log("Total ="+total);
</script>  
    

En este caso, es claro que precioUnitario y cantidad se multiplican para obtener el total. Esto mejora la legibilidad y mantenibilidad del código.

Ventajas de utilizar nombres descriptivos:

Desventajas de utilizar variables de una sola letra:

Abreviaturas

Si las reglas de malas practicas prohíben el uso de nombres de una sola letra o nombres vagos – acórtalos, NO USES abreviaciones.

MALA PRACTICA

<script>
  let numEmp, nomEmp, dirEmp, telEmp;

  numEmp = 123;
  nomEmp = "Juan Pérez";
  dirEmp = "Calle 123";
  telEmp = "555-1234";

  console.log(`Empleado ${numEmp}: ${nomEmp}, dirección: ${dirEmp}, teléfono: ${telEmp}`);

</script>  
    

Desventajas de utilizar abreviaturas:

CODIGO CORRECTO

<script>
  let numeroEmpleado, nombreEmpleado, direccionEmpleado, telefonoEmpleado;

  numeroEmpleado = 123;
  nombreEmpleado = "Juan Pérez";
  direccionEmpleado = "Calle 123";
  telefonoEmpleado = "555-1234";

  console.log(`Empleado ${numeroEmpleado}: ${nombreEmpleado}, dirección: ${direccionEmpleado}, teléfono: ${telefonoEmpleado}`);
</script>  
    

Convenciones de nomenclatura recomendadas:

SINONIMOS

Usando nombres similares para las mismas cosas hace tu vida dificil

Ejemplo de la mala practica, en prefijos de funciones. Si una función muestra un mensaje en la pantalla – comiénzalo con mostrar..., como mostarMensaje. Y entonces si otra función muestra en la pantalla otra cosa, como un nombre de usuario, comiénzalo con presentar... (como presentarNombre).

Insinúa que hay una diferencia sutil entre dichas funciones, cuando no lo hay.

Practica adecuada , la función imprimirImpresoraPágina(página) usara una impresora. Y la función imprimirPantallaTexto(texto) mostrará el texto en la pantalla…

reutilizar variables

Añade una nueva variable cada vez que sea necesario.

Mala practica, reutilizar nombres que ya existen. Simplemente escribe nuevo valores en ellos.

En una función no es recomendable usar las variables pasadas como parámetros.

Esto hará que sea realmente difícil identificar qué es exactamente la variable ahora. Y además de donde viene. Se tendra que analizar el código línea por línea y seguir los cambios en cada rama de código.

Una variante de esta mala practica es reemplazar los valores de forma encubierta con algo parecido en la mitad de un bucle o una función.

MALA PRACTICA

<script>
function malaPracticaFunction(elem) 
{
  // 20 líneas de código trabajando con elem

  elem = datoDesdeOtraFuncion();

  // 20 líneas más, ¡ahora trabajando con valores sobre escritos en elem
  return elem;
}
</script>  
    

Cuando necesite trabajar con elem en la segunda mitad de la función será sorprendido por resultados inesperados.

Visto regularmente en códigos. Letalmente efectivo, incluso contra ninjas experimentados.

Sobreponer variables externas

MALA PRACTICA

<script>
  let nombre = "Juan";
  let edad = 30;

  function imprimirDatos(nombre, edad) 
  {
    console.log(`Nombre: ${nombre}, Edad: ${edad}`);
  }

  imprimirDatos("María", 25);

  console.log(`Nombre exterior: ${nombre}, Edad exterior: ${edad}`);
</script>  
    

En este ejemplo:

Problema: La función imprimirDatos utiliza los mismos nombres de variables que las variables externas, lo que puede generar confusión y errores.

Desventajas:

Buena práctica: Utilizar nombres únicos y descriptivos para variables y parámetros:

CODIGO CORRECTO

<script>
  let nombre = "Juan";
  let edad = 30;

  // Definir una función con nombre descriptivo y parámetros claros
  function imprimirDatosDePersona(nombrePersona, edadPersona) 
  {
    console.log(`Nombre: ${nombrePersona}, Edad: ${edadPersona}`);
  }


  imprimirDatosDePersona("María", 25);

  console.log(`Nombre exterior: ${nombre}, Edad exterior: ${edad}`);  
</script>