แอป 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 ทีมก็พบว่า NullPointerException ลดลง 33% เนื่องจากข้อขัดข้องประเภทนี้เป็นข้อขัดข้องที่พบบ่อยที่สุด ใน Google Play Console การลดข้อขัดข้องประเภทนี้จึงช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก
สำหรับแอปขนาดใหญ่ที่มีการพัฒนามาอย่างต่อเนื่อง เช่น Google Home ซึ่งมีโค้ดมากกว่าล้านบรรทัด การค่อยๆ เพิ่มไลบรารี Jetpack จะเป็นประโยชน์ การรวม ไลบรารีเหล่านี้ช่วยให้ทีมสามารถรวมและแทนที่โซลูชันที่ปรับแต่งเอง บางครั้งอาจใช้เพียงไลบรารีเดียวด้วยซ้ำ เนื่องจากไลบรารี Jetpack ช่วยให้วิศวกร ปฏิบัติตามแนวทางปฏิบัติแนะนำและลดความซับซ้อนของโค้ดได้ (เช่น การใช้ Room หรือ ConstraintLayout) จึงทำให้โค้ดอ่านง่ายขึ้นด้วย ทีมงานถือว่าไลบรารี Jetpack ใหม่ๆ หลายรายการเป็น "สิ่งที่ต้องมี" รวมถึง ViewModel และ LiveData ซึ่งทั้ง 2 รายการนี้มีการใช้งาน อย่างกว้างขวางในโค้ดเบสของ Google Home
ทีมแอป Google Home พบว่าการผสานรวม Jetpack KTX กับโครูทีน Kotlin มีประโยชน์อย่างยิ่ง ตอนนี้ทีมสามารถหลีกเลี่ยงข้อบกพร่องที่ซับซ้อนในการเขียนโปรแกรมแบบอะซิงโครนัสได้โดยการเชื่อมโยงโครูทีนกับคอมโพเนนต์ที่รับรู้ถึงวงจร เช่น ViewModel
Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
เริ่มต้นใช้งาน
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเขียนแอป Android ใน Kotlin และการใช้ไลบรารี Android Jetpack