Hoy en día, escribir código es algo en lo que la IA realmente cada vez es más capaz. Le dices "ayúdame a escribir una función antirrebote" y en tres segundos te la suelta, además con comentarios y casos de prueba. Le dices "refactoriza este componente a hooks" y también te lo deja clarísimo. A veces incluso sientes que la velocidad a la que tecleas no alcanza la velocidad a la que genera.
Pero hay algo muy interesante: no importa cuán bonito sea el código generado por IA, ya sea escrito por humanos, por máquinas o por una mezcla de ambos, el código JS siempre termina pasando por una etapa: el formateo.
Quizá pienses que eso no es gran cosa, ¿no? ¿Acaso el editor no trae formateo integrado? En VS Code pulsas Shift+Alt+F, se ejecuta Prettier y listo. Sí, para el desarrollo diario es suficiente. Pero aquí viene el problema: cuando descargas de internet un fragmento de código comprimido que parece ilegible, o heredas la "montaña de código legado" que dejó el compañero anterior, o arrastras un min.js desde algún CDN para ver qué hace realmente, entonces te das cuenta de que el formateo normal no es suficiente.
Hace poco me pasó algo así. Había que corregir un bug urgente en un proyecto antiguo, pero el código fuente ya no se encontraba; en el servidor solo quedaba un archivo JS comprimido. ¿Qué hacer? Leerlo con paciencia. El código se veía así: function a(b,c){return b+c}var d=function(e){return e2} — los nombres de las variables eran todos abcdefg, las funciones estaban anidadas como muñecas rusas, ¿saltos de línea? No existían, todo el código era una sola línea, y si arrastrabas la barra de desplazamiento hacia la derecha podías terminar con calambres en la mano.
En ese momento necesitas herramientas especializadas para formatear y comprimir JS.
Primero hablemos del formateo. Una buena herramienta de formateo no solo te añade saltos de línea e indentación, sino que debe reconocer inteligentemente la estructura del código. Por ejemplo, al encontrar if(a){b()}else{c()}, debe saber cómo dividirlo en varias líneas para que sea legible. Al encontrar expresiones ternarias anidadas, debe decidir cuándo conviene un salto de línea y cuándo mantenerlo en una sola línea para mayor claridad. También los objetos literales, arrays, parámetros de funciones: las reglas de formateo en estos lugares son diferentes, y un pequeño detalle ya se ve incómodo.
He probado bastantes herramientas en línea; algunas simplemente hacen saltos de línea brutales por punto y coma, y terminan poniendo `for(var i=0;i