‫Google Home מפחית ב-33% את הסיבה מספר 1 לקריסות

בעזרת אפליקציית Google Home אפשר להגדיר ולנהל את מכשירי Google Home‏, Google Nest ו-Chromecast, ולשלוט בהם ובעוד אלפי מוצרים ביתיים חכמים כמו מנורות, מצלמות ותרמוסטטים – הכול ממקום אחד.

צוות המהנדסים שפיתח את אפליקציית Google Home נהנה מהשימוש בספריות Kotlin ו-Android Jetpack, שמשפרות את הפרודוקטיביות של המהנדסים ואת שביעות הרצון של המפתחים.

מה הם עשו

צוות Google Home החליט לשלב את Kotlin בבסיס הקוד שלו כדי לשפר את הפרודוקטיביות של התכנות ולאפשר שימוש בתכונות שפה מודרניות כמו var/val, המרות חכמות, קורוטינות ועוד. החל מיוני 2020, כ-30% מבסיס הקוד נכתב ב-Kotlin, ומומלץ לפתח את כל התכונות החדשות ב-Kotlin.

הצוות גם אימץ ספריות של Jetpack כדי לשפר את מהירות הפיתוח, להפחית את הצורך בתחזוקה של קוד boilerplate ולצמצם את כמות הקוד הנדרשת. ספריות Jetpack גם עזרו להם להפוך את הקוד שלהם לניתן לבדיקה יותר, כי יש גבולות פונקציונליים וממשקי API ברורים יותר.

תוצאות

"היעילות והכתיבה של פחות קוד שמבצע יותר פעולות הם ה'מהירות' שניתן להשיג באמצעות Kotlin". – ג'ארד בורוז (Jared Burrows), מהנדס תוכנה ב-Google Home

המעבר ל-Kotlin הוביל לצמצום כמות הקוד הנדרשת, בהשוואה לקוד Java הקיים. דוגמה אחת היא השימוש במחלקות נתונים ובתוסף Parcelize: מחלקת נתונים שכללה 126 שורות שנכתבו ב-Java יכולה להיות מיוצגת עכשיו ב-Kotlin ב-23 שורות בלבד – צמצום של 80%. בנוסף, אפשר ליצור באופן אוטומטי שיטות חלוקה שוות ושיטות חלוקה לפי חבילות, ולשמור אותן מעודכנות. גם הרבה לולאות מקוננות ובדיקות סינון פושטו באמצעות השיטות הפונקציונליות שזמינות ב-Kotlin.

‫Kotlin מאפשרת להגדיר את האפשרות של ערך null כחלק מהשפה, וכך אפשר להימנע ממצבים מורכבים, כמו שימוש לא עקבי בהערות של ערך null ב-Java, שעלול להוביל לפספוס של באג. מאז שהצוות התחיל להשתמש ב-Kotlin כדי לפתח תכונות חדשות, הוא נהנה מירידה של 33% במספר השגיאות מסוג NullPointerException. מכיוון שזהו סוג הקריסה הנפוץ ביותר ב-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