La app de Google Home te ayuda a configurar, administrar y controlar tus dispositivos Google Home, Google Nest y Chromecast, además de miles de productos para el hogar conectado, como luces, cámaras, termostatos y mucho más.
El equipo de ingeniería de la app de Google Home aprovecha los beneficios que proveen las bibliotecas de Kotlin y Android Jetpack para aumentar la productividad de los ingenieros y la satisfacción de los desarrolladores.
Qué hizo la empresa
El equipo de Google Home decidió incorporar Kotlin en su base de código a fin de que la programación sea más productiva y puedan usar funciones modernas, como var/val, conversiones inteligentes, corrutinas y más. A partir de junio de 2020, alrededor del 30% de la base de código se escribe en Kotlin y se recomienda su desarrollo para todas las funciones nuevas.
El equipo también implementó las bibliotecas de Jetpack a fin de mejorar la velocidad del desarrollador y reducir la necesidad de mantenimiento del código estándar y la cantidad de código requerido. Las bibliotecas de Jetpack también mejoraron la capacidad de prueba del código, ya que los API y límites funcionales son más claros.
Resultados
"El aumento de 'velocidad' que se logra con Kotlin se traduce en mayor eficacia y escribir menos código". - Jared Burrows, ingeniero de software de Google Home
Con la migración a Kotlin, se redujo la cantidad de código requerido en relación con el código Java existente. Un ejemplo de esto se ve en el uso de clases de datos y el complemento Parcelize, ya queuna clase de 126 líneas escritas a mano en Java ahora puede representarse en solo 23 líneas en Kotlin, lo que implica una reducción del 80%. Además, los métodos de serialización y de igualdad se pueden generar y mantener actualizados automáticamente. Asimismo, se simplificaron muchos de los bucles anidados y las verificaciones de filtrado mediante los métodos funcionales disponibles en Kotlin.
Gracias a que Kotlin permite que la nulabilidad forme parte del lenguaje, se pueden evitar situaciones complejas, como cuando el uso incoherente de las anotaciones de nulabilidad en Java genera un error. Desde que el equipo comenzó a migrar para desarrollar características nuevas con Kotlin, se observó una disminución del 33% en NullPointerExceptions. Como este es el tipo de falla más común en Google Play Console, su reducción implica una gran mejora en la experiencia del usuario.
En una app madura y de gran tamaño como Google Home, que tiene más de un millón de líneas de código, es útil agregar bibliotecas de Jetpack de forma gradual. Esa incorporación permitió que el equipo pudiera consolidar y reemplazar soluciones personalizadas, incluso con una sola biblioteca. Dado que las bibliotecas de Jetpack ayudan a los ingenieros a seguir las prácticas recomendadas y ser más concisos (por ejemplo, con Room o ConstraintLayout), también aumentó la legibilidad. El equipo considera que muchas de las bibliotecas de Jetpack nuevas son imprescindibles, como ViewModel y LiveData, que se usan ampliamente en la base de código de Google Home.
El equipo de la app de Google Home descubrió que las integraciones de Jetpack KTX con las corrutinas de Kotlin son muy útiles. Ahora se pueden evitar errores complicados de programación asíncronos asociando las corrutinas con componentes optimizados para ciclos de vida, como ViewModel.
Java es una marca registrada de Oracle y sus afiliados.
Primeros pasos
Descubre cómo escribir apps para Android en Kotlin y usar bibliotecas de Android Jetpack.