จากงาน Thailand Developer Konference #1 ของกลุ่ม Thailand Kotlin Android Developer
มีหลายเรื่องที่น่าสนใจ
ไม่ว่าจะเป็น feature ของภาษา Kotlin
ไม่ว่าจะเป็นการนำมาพัฒนา Android app
ไม่ว่าจะเป็นการใช้งานร่วมกับ Android Studio
แต่ขอทำการสรุปเรื่อง feature ที่น่าสนใจของภาษา Kotlin ไว้นิดหน่อย
ที่สำคัญสามารถนำมาพัฒนา Android app ได้แบบสบาย ๆ นะ
เหตุผลแสดงดังรูป
เริ่มจาก Null Safety
ปัญหาของ Null ในภาษา Java นั้นจัดการลำบากบาก ๆ แน่นอนว่าทำให้เจอปัญหา NullPointerException (NPE) บ่อยมาก !! รวมทั้งใน code มีการตรวจสอบค่า Null ของตัวแปรต่าง ๆ วุ่นวายไปหมด ซึ่งเป็นหนึ่งในความผิดพลาดของภาษาโปรแกรม ดังนั้น Kotlin จึงออกแบบมาเพื่อแก้ไขปัญหานี้ ให้สามารถกำหนดได้ว่ามีข้อมูลชนิดใด ตามความต้องการ เช่น- Non-null
- Nullable
ต่อมาเรื่องของ Enum Class
Enum ใน Java นั้นใช้กันน้อยมาก เนื่องจากความสามารถของ Enum ไม่เยอะเท่าไร รวมทั้งใช้งานยาก แต่ใน Kotlin นั้นทำให้ใช้งานง่ายและมีประโยชน์ สำหรับคนที่เขียนภาษา Swift มาคงไม่แปลกใจเท่าไร เนื่องจากมันเหมือนกันเลย ในการใช้งานเบื้องต้นคือ การกำหนดค่าคงที่ขึ้นมา ซึ่งเราสามารถกำหนดค่าให้ได้ แถมประกาศ Anonymous class ข้างในได้อีก ตัวอย่างเช่นเรื่องของเพศ (Gender) [gist id="0fe7576363adbe328c60dcc6fb110ea3" file="enum.kt"]ต่อมาเรื่องของ Immutable ของตัวแปรต่าง ๆ ซึ่ง build-in มาใน Kotlin เลย
ซึ่งมีทั้ง mutable และ immutable หลาย ๆ คนฟังแล้วก็อาจจะงงว่ามันคืออะไรกัน ? อธิบายง่าย ๆ คือ ตัวแปรที่เป็น immutable คือ ไม่สามารถกำหนดค่าซ้ำได้ ดังนั้นค่าของตัวแปรจะไม่มีการเปลี่ยนแปลงเลย ถ้าใครพยายามจะทำการแก้ไข จะ compile error ทันที ส่วน mutable ก็ตรงกันข้าม ทำอะไรกับมันก็ได้ โดยตัวแปรที่ต้องการให้เป็น immutable ก็ประกาศด้วย val เท่านั้นเอง ส่วน mutable ก็ใช้ var ไป ดังนี้ [gist id="0fe7576363adbe328c60dcc6fb110ea3" file="immutable.kt"]ต่อมาเรื่องของ Properties และ Fields ใน Class ต่าง ๆ
โดย property ใน class นั้นมีอยู่ 2 แบบ คือ- ถ้าต้องการให้เป็นแบบ read-only ก็ประกาศด้วย val
- ถ้าต้องการทั้ง read และ write หรือ mutable ก็ประกาศด้วย var
ต่อมาคือเรื่องของ Data Class
สำหรับ class ที่สร้างขึ้นมาสำหรับเก็บข้อมูลต่าง ๆ (Data class) ซึ่งเรามักจะเรียกว่า POJO บ้าง Data Object บ้าง Transfer Object บ้าง Bean class บ้าง Entity class บ้าง โดยมีส่วนการทำงานต่าง ๆ เหมือนกัน และ ต้องเขียน code ซ้ำ ๆ เช่น- Constructor และ overload constructor
- Getter/Setter method
- Equals() method
- HashCode() method
- toString() method
- การ copy
- ใน constructor จะต้องมี parameter อย่างน้อย 1 ตัว
- ในการประกาศ parameter ต้องกำหนดว่าเป็น immutable หรือ mutable ด้วย val หรือ var เสมอ
- Data class ไม่สามารถเป็น abstract class ได้
- Data class ไม่สามารถ extend จาก class อื่น ๆ ได้
ปิดด้วย Extension function ก็แล้วกัน
ใน Kotlin นั้นสามารถเพิ่มความสามารถเพิ่มเติมของ class ต่าง ๆ ด้วยการใช้งาน extension โดยไม่ต้องมาทำการ inheritance อีกต่อไป ตัวอย่างเช่น ถ้าต้องการเพิ่มความสามารถของ Int ด้วยการเพิ่ม Day() และ Hour() สำหรับการแปลงวันเป็นชั่วโมง ทำให้ code เราอ่านง่าย และ เข้าใจง่ายขึ้น แถมสะดวกอีกด้วย ดังตัวอย่าง [gist id="0fe7576363adbe328c60dcc6fb110ea3" file="Extension.kt"]ปล. ความสามารถยังมีอีกเยอะเลย ลองไปศึกษาเพิ่มเติมได้จาก Kotlin Document Reference รวมทั้งฝึกเขียน Kotlin ผ่าน web ที่ Try Kotlin
ยังไม่พอนะ Kotlin ยังสามารถนำไปพัฒนาระบบต่าง ๆ ได้เช่น
- ระบบ Frontend
- ระบบ Backend
- Desktop application คือ JavaFX
- Android app นี่มันแน่นอน