Google Home يقلل بنسبة 33% من أسباب الأعطال

يساعد تطبيق Google Home في إعداد أجهزة Google Home وGoogle Nest وChromecast وإدارة هذه الأجهزة، بالإضافة إلى آلاف المنتجات المنزلية المتصلة، مثل وحدات الإضاءة والكاميرات وأجهزة الترموستات وغيرها.

يستفيد الفريق الهندسي الذي يصمّم تطبيق Google Home من استخدام مكتبتَي Kotlin وAndroid Jetpack لتعزيز الإنتاجية الهندسية ورضا المطوّرين.

الإجراءات التي اتخذتها الشركة

قرّر فريق Google Home دمج لغة Kotlin في قاعدة الرموز الخاصة بهم بهدف زيادة إنتاجية البرمجة وإتاحة استخدام ميزات اللغة الحديثة مثل var/val وتكنولوجيا التمثيل اللوني والكوروتين وغير ذلك. اعتبارًا من حزيران (يونيو) 2020، تمت كتابة% 30 تقريبًا من قاعدة الرموز بلغة Kotlin، وننصح بتطوير لغة Kotlin لجميع الميزات الجديدة.

اعتمد الفريق أيضًا مكتبات Jetpack لتحسين سرعة المطوّرين وتقليل الحاجة إلى صيانة الرموز النموذجية وتقليل الكمية اللازمة من الرموز. ساعدت مكتبات Jetpack أيضًا في جعل الرموز البرمجية الخاصة بها أكثر قابلية للاختبار، نظرًا إلى وجود حدود وظيفية وواجهات برمجة تطبيقات أكثر وضوحًا.

النتائج

"إنّ الكفاءة وكتابة أقل عدد ممكن من التعليمات البرمجية وفعّالة أكبر هي "السرعة" التي يمكنك تحقيقها باستخدام Kotlin". - "جاريد بوروز"، مهندس برمجيات في Google Home

وأدّى التبديل إلى لغة Kotlin إلى تقليل كمية الرموز المطلوبة مقارنةً بالتعليمات المكافئة لرموز Java الحالية. ومن الأمثلة على ذلك استخدام فئات البيانات والمكوِّن الإضافي Parcelize: فيمكن الآن تمثيل فئة مكوّنة من 126 سطرًا مكتوبة بخط اليد في Java في 23 سطرًا فقط في Kotlin، وهو ما يعني تخفيض بنسبة 80%. بالإضافة إلى ذلك، يمكن إنشاء طرق المساواة والتوزيع تلقائيًا وتحديثها باستمرار. تم أيضًا تبسيط العديد من التكرارات الحلقية المتداخلة وعمليات التحقق من الفلترة باستخدام الطرق الوظيفية المتوفرة في Kotlin.

نظرًا لأن لغة Kotlin يمكن أن تجعل من قابلية القيم الفارغة جزءًا من اللغة، يمكن تجنُّب المواقف الصعبة، مثل الحالات التي قد يؤدي فيها الاستخدام غير المتسق للتعليقات التوضيحية في Java إلى حدوث خطأ. ومنذ أن بدأ الفريق في تطوير ميزات جديدة باستخدام Kotlin، شهد انخفاضًا بنسبة% 33 في NullPointerExceptions. وبما أنّ هذا النوع من الأعطال هو الأكثر شيوعًا على Google Play Console، فإنّ تقليلها أدّى إلى تحسين تجربة المستخدم بشكل كبير.

مع تطبيق كبير الحجم ومخصّص، مثل Google Home الذي يضم أكثر من مليون سطر من الرموز، من المفيد أن تكون قادرًا على إضافة مكتبات Jetpack تدريجيًا. وسمح دمجهم للفريق بدمج واستبدال الحلول المخصصة، في بعض الأحيان حتى بمكتبة واحدة. وبما أنّ مكتبات Jetpack يمكن أن تساعد المهندسين في اتّباع أفضل الممارسات وتقليل الإسهاب (على سبيل المثال، باستخدام Room أو ConstraintLayout)، تمت زيادة سهولة القراءة. ويعتقد الفريق أنّ العديد من مكتبات Jetpack الجديدة "ضرورية"، بما في ذلك ViewModel وLiveData، وكلتاهما يتم استخدامها على نطاق واسع في قاعدة رموز Google Home.

وقد وجد فريق تطبيق Google Home أن عمليات دمج Jetpack KTX مع كورروتينات Kotlin مفيدة على وجه التحديد. أصبح بإمكان الفريق تجنُّب الأخطاء الصعبة في البرمجة غير المتزامنة من خلال ربط الكوروتينات بمكوّنات تستنِد إلى مراحل نشاطها، مثل ViewModel.

Java هي علامة تجارية مسجّلة لشركة Oracle و/أو الشركات التابعة لها.

البدء

تعرّف على مزيد من المعلومات حول كتابة تطبيقات Android في Kotlin واستخدام مكتبات Android Jetpack.