Google Home riduce del 33% la causa n. 1 degli incidenti

L'app Google Home ti aiuta a configurare, gestire e controllare i tuoi dispositivi Google Home, Google Nest e Chromecast, oltre a migliaia di prodotti per la casa connessa come luci, videocamere, termostati e altro ancora.

Il team di tecnici responsabile dell'app Google Home trae vantaggio dall'utilizzo delle librerie Kotlin e Android Jetpack per aumentare la produttività nella progettazione e la soddisfazione degli sviluppatori.

Cosa hanno fatto

Il team di Google Home ha deciso di incorporare Kotlin nel proprio codebase per rendere più produttiva la programmazione e consentire l'utilizzo di funzionalità linguistiche moderne, come var/val, smart cast, coroutine e altro ancora. A giugno 2020, circa il 30% del codebase era scritto in Kotlin, e lo sviluppo di Kotlin è incoraggiato per tutte le nuove funzionalità.

Il team ha anche adottato le librerie Jetpack per migliorare la velocità degli sviluppatori, ridurre la necessità di manutenzione del codice boilerplate e ridurre la quantità di codice necessaria. Le librerie Jetpack hanno anche contribuito a rendere il loro codice più testabile, poiché i confini funzionali e le API sono più chiari.

Risultati

"L'efficacia e la scrittura di meno codice che fa di più è l'aumento della "velocità" che puoi ottenere con Kotlin." - Jared Burrows, Software Engineer su Google Home

Il passaggio a Kotlin ha comportato una riduzione della quantità di codice richiesto, rispetto all'equivalente del codice Java esistente. Un esempio è l'uso delle classi di dati e del plug-in Parcelize: una classe di 126 righe scritte a mano in Java ora può essere rappresentata in sole 23 righe in Kotlin, con una riduzione dell'80%. Inoltre, i metodi di uguaglianza e suddivisione in pacchetti possono essere generati automaticamente e mantenuti aggiornati. Anche molti loop nidificati e controlli di filtro sono stati semplificati utilizzando i metodi funzionali disponibili in Kotlin.

Poiché Kotlin può rendere nulla il valore in una parte del linguaggio, è possibile evitare situazioni complicate, ad esempio quando l'utilizzo incoerente delle annotazioni nullabilità in Java potrebbe portare a un bug mancante. Da quando il team ha iniziato la migrazione allo sviluppo di nuove funzionalità con Kotlin, ha registrato una diminuzione del 33% delle eccezioni NullPointerExceptions. Poiché questo è il tipo di arresto anomalo più comune su Google Play Console, la sua riduzione ha portato a un'esperienza utente notevolmente migliore.

Con un'app avanzata e di grandi dimensioni come Google Home, che ha oltre un milione di righe di codice, è utile poter aggiungere gradualmente le librerie Jetpack. La loro inclusione ha permesso al team di consolidare e sostituire soluzioni personalizzate, a volte anche con un'unica libreria. Poiché le librerie Jetpack possono aiutare gli ingegneri a seguire le best practice ed essere meno dettagliate (ad esempio, utilizzando Room o ConstraintLayout), è stata aumentata anche la leggibilità. Il team considera alcune delle più recenti librerie Jetpack come elementi imprescindibili, tra cui ViewModel e LiveData, entrambi utilizzati molto in modo intensivo nel codebase di Google Home.

Il team dell'app Google Home ha trovato particolarmente utili le integrazioni di Jetpack KTX con le coroutine Kotlin. Il team è ora in grado di evitare complicati bug di programmazione asincrona associando le coroutine a componenti sensibili al ciclo di vita come ViewModel.

Java è un marchio registrato di Oracle e/o delle sue società consociate.

Inizia

Scopri di più sulla scrittura di app Android in Kotlin e sull'utilizzo delle librerie Android Jetpack.