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

สรุปเรื่องการใช้งาน Boolean ในระบบงาน

$
0
0

จากบทความเรื่อง Don’t Use Boolean Arguments, Use Enums
เป็นบทความที่อธิบายให้เห็นว่า การใช้ boolean นั้น
มีข้อดีและข้อเสียอะไรบ้าง
เป็นสิ่งที่นักพัฒนาควรเข้าใจว่า
ทำไมเราต้องใช้ และ ทำไมเราจึงต้องหลีกเลี่ยง
จึงทำการสรุปไว้นิดหน่อย รวมกับสิ่งที่เจอมาในระบบงานต่าง 

จากตัวอย่างในบทความว่าด้วยเรื่องของ การกำหนด argument ของ function เป็น boolean

ซึ่งถ้ามีแค่ตัวเดียวปัญหาอาจจะน้อย
แต่ถ้ามีเยอะ ๆ หรือบางคนบอกว่า ทำ Data type หรือ class/struct ครอบไว้
มันก็คือปัญหาเดียวกัน
ก่อให้เกิดความซับซ้อน
ก่อให้เกิดความเข้าใจที่ผิดพลาด
หรือมาอ่านทำความเข้าใจจะยากมาก ๆ

ผมขอยกตัวอย่าง code ที่เจอบ่อยมาก ๆ

เช่นตัวแปรชื่อว่า flag คำถามก็คือ flag = true คืออะไร หรือ false คืออะไร ?
ใครเคยเจอบ้าง รู้สึกว่า มันงง ๆ ไหม

[gist id="ee558b063f8184c87a1dbb24a3723304" file="1.txt"]

ดังนั้นเรามักแก้ไขด้วยการเปลี่ยนชื่อ 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 เป็นต้น

[gist id="ee558b063f8184c87a1dbb24a3723304" file="2.txt"]

ลองปรับปรุงกันดูครับ เพื่อให้ code และระบบของเราดูแลง่ายขึ้น
ขอให้สนุกกับการ coding ครับ


Viewing all articles
Browse latest Browse all 1997

Trending Articles