Cómo aumentar la velocidad de escritura de código: IA, generación de código y plugins
10:13, 29.05.2023
Los desarrolladores se encuentran a menudo escribiendo una cantidad significativa de código y buscan constantemente formas de mejorar su velocidad de escritura de código. Este artículo explora varias herramientas y técnicas que pueden ayudar a acelerar la escritura de código, incluyendo el uso de IA, generación de código y plugins.
Generación de código
Un método eficaz para reducir la cantidad de código escrito es la generación de código. Al minimizar el código escrito directamente en una aplicación, se puede mejorar su estabilidad y reducir la aparición de errores.
Procesamiento de anotaciones Java (APT)
Un método bien conocido para la generación de código es Java Annotation Processing (APT), que se utiliza habitualmente en bibliotecas como Dagger, Hilt y Room. Sin embargo, APT tiene ciertos inconvenientes, como un mayor tiempo de compilación y limitaciones a la hora de modificar clases Java existentes.
Para que APT funcione en proyectos Kotlin, se utiliza KAPT (Kotlin Annotation Processing Tool), que genera stubs Java que luego son procesados por el procesador de anotaciones. Aunque APT evita el uso de la reflexión y puede optimizarse aún más, introduce una complejidad adicional y un impacto en el tiempo de compilación.
Kotlin Symbol Processing (KSP) es una alternativa a APT diseñada específicamente para código Kotlin. Elimina la necesidad de pasos adicionales como KAPT y promete una generación de código más rápida en comparación con APT. KSP se basa en los complementos del compilador de Kotlin, lo que permite una optimización potencial en futuras versiones.
Plugin Gradle
Además de construir proyectos, Gradle puede utilizarse para incorporar funcionalidades de generación de código. Varios plugins como ViewBinding, DataBinding, Apollo GraphQL, protobuf y SQLDelight pueden ayudar en la generación de código a partir de fuentes que no sean Kotlin/Java, como recursos XML de Android o consultas SQL.
Complementos del compilador de Kotlin
Los complementos del compilador de Kotlin ofrecen capacidades únicas para la generación de código. Algunos ejemplos de plugins son Kotlin Serialization, KSP y Jetpack Compose. Estos plugins permiten funciones adicionales y modificaciones del código que van más allá de lo especificado en el código original.
IDE
El Entorno de Desarrollo Integrado (IDE) desempeña un papel crucial en la velocidad de escritura del código. Android Studio o IDEA, los principales IDE para el desarrollo de Android, ofrecen numerosas funciones integradas. Además, la funcionalidad del IDE puede ampliarse mediante el uso de plugins.
Finalización del código
El completado de código, proporcionado por los IDE, mejora significativamente la velocidad de escritura de código. Elimina la necesidad de recordar nombres de clases específicos o de buscar documentación. La función de autocompletar sugiere clases o métodos adecuados en función del contexto, lo que agiliza y hace más eficaz la codificación.
Plantillas Live
IDEs, como IDEA y Android Studio, ofrecen una función llamada Live Templates. Estas plantillas permiten a los desarrolladores utilizar abreviaturas o atajos para generar rápidamente construcciones de código de uso común. Se pueden crear plantillas en vivo personalizadas a partir de otras ya existentes o desde cero, lo que ahorra tiempo a la hora de escribir código repetitivo.
Plugins
Los IDE pueden ampliarse mediante plugins, que proporcionan capacidades adicionales de generación y modificación de código. Sin embargo, el desarrollo y mantenimiento de plugins puede ser complejo, requiriendo compatibilidad con múltiples versiones de la API. Escribir plugins para IDEA se facilita consultando el código fuente de IDEA Community Edition.
Plantillas de Android Studio
Android Studio proporciona su propio mecanismo para generar código a través de plantillas. Aunque ofrece varias características y se actualiza regularmente con nuevas plantillas, actualmente no es posible añadir plantillas personalizadas. Sin embargo, esta limitación puede cambiar con futuras actualizaciones.
Geminio por HH
Geminio, desarrollado por HH, es una solución notable para la generación de código. Permite la generación de plantillas de código, conocidas como recetas, que pueden abarcar múltiples archivos e incluso generar módulos Gradle. Geminio ofrece la ventaja de almacenar las plantillas dentro del proyecto, lo que permite el versionado y la revisión del código.
Compleción del código AI
Con la prevalencia de la IA en diversos ámbitos, incluidos los sistemas operativos móviles y la aceleración de hardware, ha llegado el momento de considerar la posibilidad de aprovechar la IA para la escritura de código. La filial de Google incluso ha presentado AlphaCode, una red neuronal que destacó en las tareas de Codeforces, combinando pensamiento crítico, lógica, algoritmos, codificación y comprensión del lenguaje natural.
Pero ahora preferimos explorar las tecnologías de IA diseñadas para ayudar en la escritura de código en lugar de sustituir a un programador normal.
GitHub Copilot es un compañero de código de IA entrenado en proyectos de GitHub. Aunque la compatibilidad con Kotlin no es oficial, funciona bien. Sin embargo, aprende de código no relacionado, lo que dificulta la obtención de resultados relevantes. Además, requiere conexión a Internet y envía tu código al servidor, lo que plantea problemas de privacidad.
TabNine es otra solución digna de mención. Aunque sólo funciona en línea, puede autoalojarse, lo que le permite entrenar el modelo en su código base. Esto atrae a las empresas centradas en la integridad y seguridad de los datos.
Aunque codificar con IA puede ser más rápido, es importante tener en cuenta que los servicios no garantizan la calidad del código, y pueden sugerir código obsoleto o defectuoso. Por esta razón, lo que realmente puede ocurrir es que un día pasemos de ser ingenieros de software a ingenieros de calidad del código.
Conclusión
En el artículo anterior, hemos presentado algunas grandes herramientas que pueden facilitarte la escritura de código. Como has visto, pueden ser de gran ayuda para acelerar la escritura de código mediante el uso de diferentes enfoques. En particular, la escritura de código con IA tiene el potencial de ocupar una mayor parte del trabajo de los programadores. Sin embargo, por ahora, ningún enfoque puede proporcionarnos un código impecable que no necesite ser revisado, por lo que la competencia en el campo de la codificación es una cualidad necesaria para beneficiarse realmente de las herramientas comentadas.