No creo que “mala práctica” sea el término apropiado. No hay nada particularmente “malo” en un bucle for. Los métodos que mencionó, como map o forEach, son más modernos en sus implementaciones, ya que se ajustan a la tendencia actual (o recurrente) de la programación funcional en Javascript. Y, como usted dice, el uso de los métodos anteriores tiende a hacer que su código sea mucho más fácil de entender y más compacto. Con los bucles for, tendrás que trabajar un poco más con ellos para que sean más legibles. Por lo que vale, los bucles while no sufren el problema de legibilidad tan mal como los bucles for.
Sin embargo, es importante tener en cuenta que esto no hace que los bucles sean inútiles. La programación funcional no se trata de velocidad o eficiencia, sino de capacidad de composición y mantenimiento de su código. Simplemente se ve más agradable en general. Pero los bucles tienden a ser MUCHO (y me refiero a MUCHO) más rápido que los métodos de programación funcional. Si está lidiando con un cuello de botella en el rendimiento de su aplicación porque tiene una lista muy grande de objetos masivos para moverse y ya está utilizando un algoritmo de búsqueda bastante eficiente, un bucle es probablemente la siguiente mejor opción para probar. En cuanto al rendimiento, un bucle siempre superará el mapa, la reducción, el filtro o cualquier otra cosa, por un margen bastante grande, y tiende a ser más eficiente en la memoria.
Entonces no se trata de cuál es una “mala práctica”. Se trata de qué herramienta utilizar para lograr lo que necesita lograr. En general, el uso de los métodos mencionados anteriormente es bueno para la legibilidad. Sin embargo, si la memoria y la velocidad están a la orden del día, como cuando el rendimiento ultra alto de su aplicación es una demanda crítica, entonces los bucles probablemente le darán esa ventaja adicional.
- ¿Cuáles son tus trucos de desarrollo favoritos basados en pruebas?
- Cómo crear una nueva tabla de actualización usando la tabla bash
- ¿Cómo pueden los programadores lidiar con no aprender nada nuevo en el trabajo?
- ¿Qué se necesita para escalar Django (marco web)?
- ¿Cómo se creó websitegrader.com?
Por lo tanto, mi recomendación es: usar map, reduce, filter y forEach de forma predeterminada, pero use un bucle cuando la optimización sea absolutamente necesaria.
(Lo anterior también se aplica al método “cada” de jQuery).