Google Home giảm 33% nguyên nhân số 1 gây ra sự cố

Ứng dụng Google Home giúp bạn thiết lập, quản lý và điều khiển các thiết bị Google Home, Google Nest và Chromecast, cùng hàng nghìn sản phẩm nhà thông minh như đèn, camera, máy điều nhiệt và nhiều thiết bị khác.

Nhóm kỹ thuật phụ trách ứng dụng Google Home được hưởng lợi từ việc sử dụng Kotlin và các thư viện Android Jetpack để tăng năng suất kỹ thuật cũng như mức độ hài lòng của nhà phát triển.

Những việc họ đã làm

Nhóm Google Home quyết định kết hợp Kotlin vào cơ sở mã của họ để giúp việc lập trình hiệu quả hơn và cho phép sử dụng các tính năng ngôn ngữ hiện đại như var/val, truyền thông minh, coroutine, v.v. Tính đến tháng 6 năm 2020, khoảng 30% cơ sở mã được viết bằng Kotlin và chúng tôi khuyến khích phát triển Kotlin cho tất cả các tính năng mới.

Nhóm này cũng áp dụng các thư viện Jetpack để cải thiện tốc độ của nhà phát triển, giảm nhu cầu bảo trì mã nguyên mẫu và giảm lượng mã cần thiết. Các thư viện Jetpack cũng giúp mã của họ dễ kiểm thử hơn, vì có các API và ranh giới chức năng rõ ràng hơn.

Kết quả

"Hiệu quả và viết ít mã hơn nhưng làm được nhiều việc hơn là điểm "tăng tốc" mà bạn có thể đạt được với Kotlin". – Jared Burrows, Kỹ sư phần mềm tại Google Home

Việc chuyển sang Kotlin giúp giảm lượng mã cần thiết so với lượng mã Java tương đương hiện có. Một ví dụ là việc sử dụng các lớp dữ liệu và trình bổ trợ Parcelize: một lớp có 126 dòng được viết tay trong Java hiện có thể được biểu thị chỉ trong 23 dòng trong Kotlin – giảm 80%. Ngoài ra, các phương thức so sánh và phân chia có thể được tạo tự động và luôn được cập nhật. Nhiều vòng lặp lồng nhau và các bước kiểm tra lọc cũng được đơn giản hoá bằng các phương thức chức năng có trong Kotlin.

Vì Kotlin có thể biến tính chất rỗng thành một phần của ngôn ngữ, nên bạn có thể tránh được những tình huống khó khăn, chẳng hạn như khi việc sử dụng chú giải tính chất rỗng không nhất quán trong Java có thể dẫn đến lỗi bị bỏ sót. Kể từ khi bắt đầu chuyển sang phát triển các tính năng mới bằng Kotlin, nhóm này nhận thấy số lượng NullPointerExceptions giảm 33%. Vì đây là loại sự cố phổ biến nhất trên Google Play Console, nên việc giảm số lượng sự cố này đã giúp cải thiện đáng kể trải nghiệm người dùng.

Với một ứng dụng lớn và hoàn thiện như Google Home (có hơn một triệu dòng mã), việc có thể từng bước thêm các thư viện Jetpack là rất hữu ích. Việc kết hợp các giải pháp này cho phép nhóm hợp nhất và thay thế các giải pháp được điều chỉnh tuỳ chỉnh, đôi khi chỉ bằng một thư viện duy nhất. Vì các thư viện Jetpack có thể giúp kỹ sư áp dụng các phương pháp hay nhất và ít chi tiết hơn (ví dụ: sử dụng Room hoặc ConstraintLayout), nên khả năng đọc cũng tăng lên. Nhóm này coi nhiều thư viện Jetpack mới là "thứ phải có", bao gồm cả ViewModelLiveData. Cả hai thư viện này đều được sử dụng rộng rãi trong cơ sở mã của Google Home.

Nhóm ứng dụng Google Home nhận thấy các hoạt động tích hợp Jetpack KTX với các coroutine Kotlin đặc biệt hữu ích. Giờ đây, nhóm có thể tránh được các lỗi lập trình không đồng bộ phức tạp bằng cách liên kết các coroutine với các thành phần nhận biết vòng đời như ViewModel.

Java là một nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết của Oracle.

Bắt đầu

Tìm hiểu thêm về cách viết ứng dụng Android bằng Kotlincách sử dụng các thư viện Android Jetpack.