L'application Google Home vous permet de configurer, gérer et contrôler vos appareils Google Home, Google Nest et Chromecast, ainsi que des milliers d'autres produits connectés pour la maison (systèmes d'éclairage, caméras, thermostats et plus encore).
L'équipe d'ingénieurs à l'origine de l'application Google Home utilise Kotlin et les bibliothèques Android Jetpack pour améliorer la productivité des ingénieurs et la satisfaction des développeurs.
Ce qu'ils ont fait
L'équipe Google Home a décidé d'intégrer Kotlin à sa base de code pour rendre la programmation plus productive et permettre l'utilisation de fonctionnalités linguistiques modernes telles que var/val, les casts intelligents, les coroutines, etc. Depuis juin 2020, environ 30 % de la base de code est écrit en Kotlin, et le développement Kotlin est encouragé pour toutes les nouvelles fonctionnalités.
L'équipe a également adopté les bibliothèques Jetpack pour accélérer le développement, réduire la nécessité de maintenance du code récurrent et diminuer la quantité de code nécessaire. Les bibliothèques Jetpack ont également contribué à rendre leur code plus testable, car les limites fonctionnelles et les API sont plus claires.
Résultats
"L'efficacité et la capacité à écrire moins de code pour faire plus sont les principaux avantages de Kotlin en termes de rapidité." – Jared Burrows, ingénieur logiciel chez Google Home
Le passage à Kotlin a permis de réduire la quantité de code requise par rapport à l'équivalent du code Java existant. Par exemple, l'utilisation de classes de données et du plug-in Parcelize : une classe qui comportait 126 lignes écrites à la main en Java peut désormais être représentée en seulement 23 lignes en Kotlin, soit une réduction de 80 %. De plus, les méthodes d'égalité et de répartition peuvent être générées automatiquement et mises à jour. De nombreuses boucles imbriquées et vérifications de filtrage ont également été simplifiées à l'aide des méthodes fonctionnelles disponibles dans Kotlin.
Comme Kotlin peut faire de la possibilité de valeur nulle une partie du langage, il est possible d'éviter des situations délicates, par exemple lorsqu'une utilisation incohérente des annotations de possibilité de valeur nulle en Java peut entraîner un bug manqué. Depuis que l'équipe a commencé à migrer vers le développement de nouvelles fonctionnalités avec Kotlin, elle a constaté une diminution de 33 % des NullPointerExceptions. Comme il s'agit du type d'erreur le plus courant sur la Google Play Console, la réduction de leur nombre a permis d'améliorer considérablement l'expérience utilisateur.
Avec une application volumineuse et mature comme Google Home, qui compte plus d'un million de lignes de code, il est utile de pouvoir ajouter progressivement des bibliothèques Jetpack. Leur intégration a permis à l'équipe de consolider et de remplacer des solutions sur mesure, parfois même avec une seule bibliothèque. Les bibliothèques Jetpack peuvent aider les ingénieurs à suivre les bonnes pratiques et à être moins verbeux (par exemple, en utilisant Room ou ConstraintLayout). La lisibilité a donc également été améliorée. L'équipe considère que de nombreuses bibliothèques Jetpack plus récentes sont indispensables, y compris ViewModel et LiveData, qui sont toutes deux largement utilisées dans le code Google Home.
L'équipe de l'application Google Home a trouvé les intégrations Jetpack KTX avec les coroutines Kotlin particulièrement utiles. L'équipe peut désormais éviter les bugs de programmation asynchrone délicats en associant des coroutines à des composants prenant en compte le cycle de vie, comme ViewModel.
Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Commencer
En savoir plus sur l'écriture d'applications Android en Kotlin et l'utilisation des bibliothèques Android Jetpack