Google Home mengurangi penyebab error utama sebesar 33%

Aplikasi Google Home membantu menyiapkan, mengelola, dan mengontrol perangkat Google Home, Google Nest, dan Chromecast, serta ribuan produk rumah yang terhubung seperti lampu, kamera, termostat, dan banyak lagi.

Tim engineer di balik aplikasi Google Home memanfaatkan library Kotlin dan Android Jetpack untuk meningkatkan produktivitas engineer dan kepuasan developer.

Yang mereka lakukan

Tim Google Home memutuskan untuk memasukkan Kotlin ke codebase agar pemrograman menjadi lebih produktif dan memungkinkan penggunaan fitur bahasa modern seperti var/Val, smart cast, coroutine, dan lainnya. Pada bulan Juni 2020, sekitar 30% codebase ditulis dalam Kotlin, dan pengembangan Kotlin dianjurkan untuk semua fitur baru.

Tim juga menggunakan library Jetpack untuk meningkatkan kecepatan developer, mengurangi kebutuhan pemeliharaan kode boilerplate, dan mengurangi jumlah kode yang diperlukan. Library Jetpack juga membantu membuat kodenya lebih mudah diuji, karena terdapat batas fungsional dan API yang lebih jelas.

Hasil

"Efektivitas dan penulisan sedikit kode dengan hasil lebih banyak adalah peningkatan ‘kecepatan’ yang dapat dicapai dengan Kotlin.” - Jared Burrows, Software Engineer di Google Home

Beralih ke Kotlin menghasilkan pengurangan jumlah kode yang diperlukan, dibandingkan dengan kode Java yang sudah ada dan setara. Salah satu contohnya adalah penggunaan class data dan plugin Parcelize: class yang sebelumnya berisi 126 baris tulisan tangan di Java, kini dapat direpresentasikan dalam 23 baris di Kotlin. Ini artinya terdapat pengurangan sebesar 80%. Selain itu, metode pemerataan dan pembagian dapat dihasilkan otomatis dan terus diperbarui. Banyak loop bertingkat dan pemeriksaan pemfilteran juga disederhanakan menggunakan metode fungsional yang tersedia di Kotlin.

Karena Kotlin dapat menjadikan nullability sebagai bagian dari bahasa, situasi yang sulit dapat dihindari. Misalnya, saat penggunaan anotasi nullability yang tidak konsisten di Java dapat menyebabkan bug yang terlewat. Sejak tim mulai melakukan migrasi untuk mengembangkan fitur baru dengan Kotlin, mereka melihat penurunan sebesar 33% dalam NullPointerExceptions. Karena ini merupakan jenis error paling umum di Konsol Google Play, penurunan tersebut mewujudkan pengalaman pengguna yang jauh lebih baik.

Google Home memiliki lebih dari satu juta baris kode, yang menjadikannya sebagai aplikasi besar dan andal. Oleh karena itu, penambahan library Jetpack secara bertahap sangatlah membantu. Memasukkan library tersebut memungkinkan tim menggabungkan dan mengganti solusi khusus yang disesuaikan, bahkan terkadang dengan satu library. Karena library Jetpack dapat membantu engineer mengikuti praktik terbaik dan tidak terlalu panjang (misalnya, menggunakan Room atau ConstraintLayout), tingkat keterbacaan juga meningkat. Tim ini meninjau banyak library Jetpack baru yang 'wajib dimiliki', termasuk ViewModel dan LiveData, yang keduanya digunakan secara ekstensif di codebase Google Home.

Tim aplikasi Google Home melihat bahwa integrasi KTX Jetpack dengan coroutine Kotlin sangatlah berguna. Tim kini dapat menghindari bug pemrograman asinkron yang rumit melalui pengaitan coroutine dengan komponen yang memperhatikan siklus proses seperti ViewModel.

Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.

Mulai

Pelajari cara menulis aplikasi Android di Kotlin dan menggunakan library Android Jetpack lebih lanjut.