O Google Home reduz a principal causa de falhas em 33%

O app Google Home ajuda a configurar, gerenciar e controlar seus dispositivos Google Home, Google Nest e Chromecast, além de milhares de produtos de casa conectada, como luzes, câmeras, termostatos e muito mais.

A equipe de engenharia por trás desse app se beneficia do uso das bibliotecas Kotlin e Android Jetpack para aumentar a produtividade da engenharia e a satisfação do desenvolvedor.

O que eles fizeram

A equipe do Google Home decidiu incorporar o Kotlin à base do código para tornar a programação mais produtiva e permitir o uso de recursos da linguagem moderna, como var/val, transmissões inteligentes, corrotinas e muito mais. Desde junho de 2020, cerca de 30% da base de código está escrita em Kotlin, e o desenvolvimento em Kotlin é incentivado para todos os novos recursos.

A equipe também adotou bibliotecas do Jetpack para melhorar a velocidade do desenvolvedor, diminuir a necessidade de manutenção do código boilerplate e reduzir a quantidade de código necessária. As bibliotecas do Jetpack também ajudaram a tornar os códigos mais testáveis porque elas têm APIs e limites funcionais mais claros.

Resultados

"Com o Kotlin, há um aumento na velocidade, já que ele é mais eficaz e exige que menos código seja escrito.", Jared Burrows, engenheiro de software do Google Home

Passar a usar o Kotlin resultou em uma redução na quantidade de código necessária em comparação com o equivalente em código Java já existente. Um exemplo disso é o uso de classes de dados e o plug-in Parcelize: uma classe com 126 linhas escritas manualmente em Java agora pode ser representada em apenas 23 linhas em Kotlin. É uma redução de 80%. Além disso, os métodos de igualdade e de divisão podem ser gerados e atualizados automaticamente. Muitos loops aninhados e verificações de filtragem também foram simplificados usando os métodos funcionais disponíveis no Kotlin.

Como o Kotlin pode fazer com que a nulidade seja parte da linguagem, situações complicadas podem ser evitadas, como quando o uso inconsistente de anotações de nulidade em Java pode levar a um bug que passa despercebido. A implementação do Kotlin reduziu as NullPointerExceptions da equipe do app Google Home em 33%. Como esse é o tipo de falha mais comum no Google Play Console, a redução melhorou drasticamente a experiência do usuário.

Com um app grande e maduro como o Google Home, que tem mais de um milhão de linhas de código, é útil poder adicionar gradualmente as bibliotecas do Jetpack. A incorporação permitiu que a equipe consolidasse e substituísse soluções personalizadas, às vezes até mesmo com uma única biblioteca. Como as bibliotecas do Jetpack podem ajudar os engenheiros a seguir as práticas recomendadas e ser menos detalhados (por exemplo, usando Room ou ConstraintLayout), a legibilidade também aumentou. A equipe considera muitas das novas bibliotecas do Jetpack indispensáveis, incluindo ViewModel e LiveData, ambas usadas extensivamente na base do código do Google Home.

A equipe do app Google Home achou as integrações do Jetpack KTX com corrotinas do Kotlin muito úteis. Agora, a equipe pode evitar bugs de programação assíncronos complexos associando corrotinas com componentes que reconhecem o ciclo de vida, como ViewModel.

Primeiros passos

Saiba mais sobre como escrever apps Android em Kotlin e como usar bibliotecas do Android Jetpack.