Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Dart] สรุปจาก session เรื่อง Why null safety ?

$
0
0

ใน Flutter 2.2 นั้น Null Safety จากภาษา Dart จะเป็นค่า default ให้เลย
เนื่องจากก่อนหน้านี้จะต้องทำการ migrate project ตามความต้องการ
ดังนั้นเรามาทำความเข้าใจกันว่า
ทำไมต้อง Null Safty ด้วย
มาจาก VDO ในงาน Google I/O 2021 เรื่อง Why null safety ?
เป็นอีก session ที่ชอบมาก ๆ
จึงสรุปไว้นิดหน่อย

เริ่มจาก code ของ Dart จะมีตัวแปร 2 แบบคือ

  • Nullable
  • Non Nullable

ตัวอย่างเช่น
ถ้าเป็น Non Nullable แต่ดันส่งค่า null เข้าไป
จะมี error ดังนี้ ซึ่งเป็น compile time error

ในทางกลับกัน ถ้ากำหนดให้เป็น Nullable แล้ว พยายามเข้าถึงค่านั้นตรง ๆ

ก็จะเกิด compile error เช่นกัน เพราว่า อาจจะเกิดปัญหาได้ เพราะว่ามีโอกาสเป็น nullดังนั้นมีโอกาสเกิด NullPointer Exception (NPE) ได้
ปล. nullable คือการใส่ ? หลังชื่อ type นั่นเอง

การทำงานนั้น ต้องการ feedback loop ที่รวดเร็ว

จึงทำการ compile change หลังจากที่แก้ไข
หรือเปลี่ยงแปลง code เลยแสดงการทำงานดังรูป

เปลี่ยนมาให้เร็วขึ้น

ส่วนพวก Type checking ยิ่งเร็วมาก ๆ
เพราะว่า Dart เป็น static type อยู่แล้ว
ทำให้การตรวจสอบง่ายและเร็วขึ้น

หลังจากมี Null Safety ขึ้นมาแล้ว

การทำงานของ compiler จะลดน้อยลง
นั่นคือการทำงานเร็วขึ้นนั่นเอง

แต่การใช้งานก็ต้องระวังด้วยเช่นกัน เพราะว่า ถ้าใช้ผิดก็เกิดปัญหาได้เช่นกัน

ยกตัวอย่างการ force cast แบบนี้

[gist id="f40f70f6cd988b559383d10823a68963" file="demo02.dart"]

ดังนั้นถ้าใครยังไม่ใช้ ก็ใช้ได้แล้วนะ

จะเจอสัญลักษณะเพิ่มมาอีก 2 ตัวคือ ? และ !
รวมทั้งตัวแปรประกาศขึ้นมา แต่ไม่ทำการ initial ค่าให้ ก็ error ด้วย
ดังนั้นลอง migrate หรือเปลี่ยนกันดูครับ
ผมเพิ่งเปลี่ยนไป 1 project สนุกสนานมาก ๆ


Viewing all articles
Browse latest Browse all 1997

Trending Articles