จากบทความเรื่อง Don’t Use Boolean Arguments, Use Enums
เป็นบทความที่อธิบายให้เห็นว่า การใช้ boolean นั้น
มีข้อดีและข้อเสียอะไรบ้าง
เป็นสิ่งที่นักพัฒนาควรเข้าใจว่า
ทำไมเราต้องใช้ และ ทำไมเราจึงต้องหลีกเลี่ยง
จึงทำการสรุปไว้นิดหน่อย รวมกับสิ่งที่เจอมาในระบบงานต่าง
จากตัวอย่างในบทความว่าด้วยเรื่องของ การกำหนด argument ของ function เป็น boolean
ซึ่งถ้ามีแค่ตัวเดียวปัญหาอาจจะน้อย
แต่ถ้ามีเยอะ ๆ หรือบางคนบอกว่า ทำ Data type หรือ class/struct ครอบไว้
มันก็คือปัญหาเดียวกัน
ก่อให้เกิดความซับซ้อน
ก่อให้เกิดความเข้าใจที่ผิดพลาด
หรือมาอ่านทำความเข้าใจจะยากมาก ๆ
ผมขอยกตัวอย่าง code ที่เจอบ่อยมาก ๆ
เช่นตัวแปรชื่อว่า flag คำถามก็คือ flag = true คืออะไร หรือ false คืออะไร ?
ใครเคยเจอบ้าง รู้สึกว่า มันงง ๆ ไหม
ดังนั้นเรามักแก้ไขด้วยการเปลี่ยนชื่อ flag เป็นชื่ออื่นที่เข้าใจมากขึ้น
ในบทความยกตัวอย่างดังนี้
- isUserOnline
- isUserBlocked
- isUserExpired
ทำให้อ่านเข้าใจง่ายขึ้น ไม่งง
แต่ถ้ามีจำนวนที่มากขึ้น
การใช้งานก็ผิดพลาดได้ง่ายขึ้น
ซึ่งปัญหานี้ภาษาโปรแกรม และ Editor/IDE ก็ช่วยแก้ไขไปบ้าง
นั่นคือ การใช้ named parameter หรือ แสดงชื่อ parameter ที่ต้องส่งเข้าไปให้เห็นเลย
ก็ถือว่าช่วยให้ผู้ใช้งานเข้าใจง่ายมากขึ้น
แต่จะดีกว่าหรือไม่ ถ้าไปใช้ Data type รูปแบบอื่น ๆ
เช่นการนำ Enum มาใช้ เพื่อแก้ไขปัญหาเหล่านี้ไปในตัวเลย
ไม่ต้องไปพึ่งพา Editor/IDE ใด ๆ
จากเรื่องนี้ ก็เพิ่งคุยไปเรื่องของ Data type ใน Database เช่นกัน
เนื่องจากทำการเก็บข้อมูลสถานะของแต่ละ record/row/document ว่าเป็นอย่างไร
เช่น เปิด หรือ ปิด
มักจะใช้ data type เป็น number เช่น 0 หรือ 1
หรืออาจจะใช้ boolean ก็ได้
แต่เมื่อเรา query ข้อมูลมาดู
ก็ต้องมาตีความอีกว่า 0, 1 หรือ true/false คืออะไร
จะดีกว่าไหมถ้าใช้ Enum ใน database ไปเลย
ยกตัวอย่างเช่น Enum ใน MySQL database เป็นต้น
ลองปรับปรุงกันดูครับ เพื่อให้ code และระบบของเราดูแลง่ายขึ้น
ขอให้สนุกกับการ coding ครับ