หลังดูบอลมานั่งเขียน Android app ด้วยภาษา Kotlin กันหน่อย
ซึ่งเป็นภาษาที่มีความสามารถที่ดีมากมาย
หนึ่งในนั้นคือ Data Class ที่ Java Developer ถือว่าเป็น killer feature เลยนะ
เพราะว่า ไม่ต้องมาเขียนหรือ generate getter/setter method เอง
ดังนั้นทุกคนก็จะ convert พวก POJO class มาเป็น Data Class กันหมดเลย
รู้กันไหมว่า ความสามารถนี้มันมาพร้อม cost นะ
มาลองดูกัน
นักพัฒนา Android app ทุกคนรู้ว่า
ทุกสิ่งอย่างที่นำมาใช้ในการพัฒนา Android app นั้น ล้วนมีค่าใช้จ่ายทั้งนั้น เนื่องจากมันส่งผลต่อ จำนวน method ของ app ซึ่ง Android app มีจำกัดให้ 64K method ถ้ามีจำนวนเกินนี้ก็ต้องเข้าสู่โลกของ Multi-Dex นั่นหมายความว่า ต้องใช้เวลาในการ build มากขึ้น ดังนั้น เราจึงควรต้องจัดการให้ดีโดยปกติการนับจำนวน method นั้น มักจะใช้งาน plugin ชื่อว่า Dexcount gradle plugin
มาดูกันสิว่า Data Class มันเป็นอย่างไรบ้าง ?
เริ่มด้วยการสร้าง Android project ด้วยภาษา Kotlin ใน Android Studio นับจำนวน method ได้ดังนี้ [code] Total methods in app-debug.apk: 23512 (35.88% used) Total fields in app-debug.apk: 11117 (16.96% used) Total classes in app-debug.apk: 2648 (4.04% used) Methods remaining in app-debug.apk: 42023 Fields remaining in app-debug.apk: 54418 Classes remaining in app-debug.apk: 62887 [/code] จากนั้นสร้าง Data class แบบง่าย ๆ ดังนี้ [code] data class User(val id: Int = 0, val firstname: String = "") [/code] ลองนับจำนวน method ได้ดังนี้ [code] Total methods in app-debug.apk: 23524 (35.90% used) Total fields in app-debug.apk: 11119 (16.97% used) Total classes in app-debug.apk: 2649 (4.04% used) Methods remaining in app-debug.apk: 42011 Fields remaining in app-debug.apk: 54416 Classes remaining in app-debug.apk: 62886 [/code]สิ่งที่เพิ่มขึ้นมาคือ 1 class 2 field 12 methodมาจากไหนตั้ง 12 method นะ ? เยอะใช้ได้เลยนะ
- equals()
- hashCode()
- toString()
- copy()
- componentN()
- กำหนดค่า default argument
- primary constructor