Aplikacja Google Home pomaga konfigurować urządzenia Google Home, Google Nest i Chromecast, zarządzać nimi i nimi sterować, a także tysiącami innych urządzeń w inteligentnym domu, takich jak światła, kamery czy termostaty.
Zespół inżynierów pracujący nad aplikacją Google Home korzysta z Kotlin i bibliotek Android Jetpack, aby zwiększyć wydajność pracy i zadowolenie deweloperów.
Rozwiązanie
Zespół Google Home zdecydował się włączyć język Kotlin do swojego kodu, aby zwiększyć produktywność programowania i umożliwić korzystanie z nowoczesnych funkcji języka, takich jak var/val, inteligentne rzutowanie, współprogramy i inne. Od czerwca 2020 r. około 30% kodu jest napisane w Kotlinie, a w przypadku wszystkich nowych funkcji zalecane jest używanie tego języka.
Zespół zaczął też korzystać z bibliotek Jetpack, aby przyspieszyć pracę deweloperów, zmniejszyć potrzebę konserwacji kodu szablonowego i zredukować ilość kodu. Biblioteki Jetpack pomogły też zwiększyć testowalność kodu, ponieważ mają wyraźniejsze granice funkcjonalne i interfejsy API.
Wyniki
„Skuteczność i pisanie mniejszej ilości kodu, który robi więcej, to „szybkość”, jaką można osiągnąć dzięki Kotlinowi”. – Jared Burrows, inżynier oprogramowania w Google Home
Przejście na język Kotlin spowodowało zmniejszenie ilości wymaganego kodu w porównaniu z odpowiednikiem w języku Java. Przykładem może być użycie klas danych i wtyczki Parcelize: klasa, która w języku Java miała 126 wierszy kodu, w języku Kotlin może mieć tylko 23 wiersze, co oznacza redukcję o 80%. Dodatkowo metody równości i podziału można generować automatycznie i aktualizować. Wiele zagnieżdżonych pętli i sprawdzanie filtrowania zostało też uproszczone za pomocą metod funkcyjnych dostępnych w języku Kotlin.
Kotlin może sprawić, że dopuszczalność wartości null stanie się częścią języka, dzięki czemu można uniknąć trudnych sytuacji, takich jak niespójne użycie adnotacji dopuszczalności wartości null w Javie, które może prowadzić do przeoczenia błędu. Od czasu rozpoczęcia migracji do tworzenia nowych funkcji w Kotlinie zespół odnotował 33-procentowy spadek liczby błędów NullPointerException. Jest to najczęstszy typ awarii w Konsoli Google Play, więc zmniejszenie ich liczby znacznie poprawiło komfort użytkowania.
W przypadku dużej, zaawansowanej aplikacji takiej jak Google Home, która ma ponad milion wierszy kodu, przydatne jest stopniowe dodawanie bibliotek Jetpack. Dzięki nim zespół mógł skonsolidować i zastąpić rozwiązania dostosowane do indywidualnych potrzeb, czasami nawet za pomocą jednej biblioteki. Biblioteki Jetpack pomagają inżynierom stosować sprawdzone metody i pisać mniej kodu (np. za pomocą Room lub ConstraintLayout), co zwiększa czytelność. Zespół uważa wiele nowszych bibliotek Jetpack za „niezbędne”, w tym ViewModel i LiveData, które są szeroko stosowane w kodzie Google Home.
Zespół aplikacji Google Home uznał integrację Jetpack KTX z korutynami Kotlin za szczególnie przydatną. Dzięki powiązaniu korutyn z komponentami uwzględniającymi cykl życia, takimi jak ViewModel, zespół może teraz unikać trudnych błędów programowania asynchronicznego.
Java jest zastrzeżonym znakiem towarowym firmy Oracle lub jej podmiotów stowarzyszonych.
Rozpocznij
Dowiedz się więcej o pisaniu aplikacji na Androida w języku Kotlin i korzystaniu z bibliotek Android Jetpack.