วันจันทร์ที่ 4 มีนาคม พ.ศ. 2556

AndAlso Operator





เคยเจอไหมกับเวลาที่ Coding Programs แล้วตอน Compile มันไม่ Error แต่พอใช้งานมันดัน Error ซะงั้น (Error ขณะ Runtime) ผมเชื่อมั้นอย่างสุดซึ้งว่าเจอกันมาทุกคน ถ้า Error ด้วยปัญหาที่มันเกินความคาดหมายก็ยังพอทำเนา แต่ถ้ามา Error ด้วยเรื่องกระโหลกกระลาแบบตัวอย่างต่อไปนี้หลายๆคนคงเซ็งไม่น้อยไปดูตัวอย่างกัน

ตัวอย่าง : การตรวจสอบข้อมูลชนิดตัวเลขที่ >= 15

ดูๆ แล้วมันก็ไม่น่าผิดอะไร เงือนไขแรกก็ตรวจสอบว่าเป็นตัวเลขหรือเปล่า เงือนไขที่สองก็ตรวจสอบว่าค่ามากกว่าหรือเท่ากับ 15 หรือเปล่า ลอง Run ดูก็ไม่มีปัญหาอะไรแต่พอใส่ตัวอักษรเข้าไปเท่านั้นแหละ

               
มันมาเลย Conversion From String “A” To Type ‘Double’ Is Not Valid. อันนี้ต้องบอกว่าถ้าใครไม่เจอไม่มีทางรู้ว่ามันรู้สึกยังไง ตอนผมเจอมันครั้งแรกผมงงเป็นไก่ตาแตก เพราะมั้นใจอย่างยิ่งว่า เงือนไขที่ผมกำหนดมันไม่ผิดแน่นอน เพราะจากตัวอย่าง มันควรเจอแล้วว่า เขตข้อมูลที่กำหนดมันไม่ใช้ตัวเลข จึงควรข้าม เงือนไขที่ 2 ไป (แบบที่เราๆมักคิดกันตอนที่เรียนหนังสือเพราะถ้าอันแรกผิด ถึงอันหลังจะถูกมันก็ผิดอยู่ดีจึงไม่จำเป็นอะไรที่ต้องไปตรวจสอบ สำหรับนักพัฒนาที่พัฒนาโปรแกรมมาซักระยะเวลาหนึ่งทุกคนต้องเจอเหตุการณ์แบบนี้อย่างแน่นอน ซึ่งหลายๆคนมักจะแก้ปัญหานี้โดยวิธีการใช้ IF ซ้อน IF อีกทีหนึ่ง (สมัยก่อนผมก็ใช้วิธีนี้) ซึ่งก็ไม่ผิดอะไร แต่มันจะทำให้ Code มันยืดไปหน่อยและการกลับมาทำความเข้าใจกับ Code ในภายหลังก็ทำได้ยากเช่นกัน ซึ่ง AndAlso แก้ปัญหานี้ได้ตรงจุดพอดีเพราะการทำงานของ AndAlso นั้นจะทำการข้ามการตรวจสอบเงือนไขที่ 2 ทันทีถ้าเงือนไขแรกเป็น False















ไม่มีความคิดเห็น:

แสดงความคิดเห็น