หมายเลขที่ไม่มีหลักตรวจสอบเป็นกรณีที่ทีมพัฒนามักจัดการผิดมากที่สุด ไม่ใช่เพราะเทคนิคซับซ้อน แต่เพราะระบบถูกออกแบบให้มีเพียงสองคำตอบคือผ่านกับไม่ผ่าน เมื่อเจอหมายเลขที่ไม่มีสูตรให้คำนวณ ระบบจึงต้องเลือกข้างใดข้างหนึ่ง และมักเลือกข้างที่สร้างความเสียหาย วิธีที่ดีกว่าคือยอมรับข้อจำกัดของตนแล้วออกแบบคำตอบให้ตรงกับสิ่งที่รู้จริง
หมายเลขแบบใดที่ไม่มีหลักตรวจสอบเปิดเผย?
หมายเลขกลุ่มนี้คือหมายเลขที่ถูกออกแบบให้ทำหน้าที่เป็นเพียงรหัสลำดับที่หน่วยงานหนึ่งออกให้ ไม่ได้ฝังกลไกตรวจสอบไว้ในตัวเลย ตัวอย่างที่พบได้ทั่วไปคือหมายเลขทะเบียนที่ออกตามลำดับการขึ้นทะเบียน หมายเลขสมาชิกที่ออกโดยองค์กร และหมายเลขเอกสารภายในที่ระบบอื่นต้องนำไปอ้างอิงต่อ
ลักษณะร่วมของหมายเลขกลุ่มนี้คือหน่วยงานผู้ออกไม่เคยเผยแพร่คำอธิบายการคำนวณใด ๆ เพราะไม่มีสูตรให้เผยแพร่ตั้งแต่แรก การที่ยังไม่มีเอกสารจึงไม่ใช่สัญญาณว่ามีสูตรลับซ่อนอยู่
เมื่อไม่มีสูตร ระบบภายนอกที่รับหมายเลขนี้มาจึงทำได้เพียงตรวจว่าความยาวอยู่ในช่วงที่คาดไว้ และชุดอักขระที่ได้รับเป็นแบบที่ยอมรับได้ ซึ่งเป็นข้อจำกัดที่แท้จริง ไม่ใช่ความบกพร่องของการนำไปใช้
ทำไมบางระบบจึงไม่เผยแพร่สูตรให้ตรวจ
เหตุผลข้อแรกคือไม่มีสูตรตั้งแต่ต้น หมายเลขถูกสร้างโดยการเพิ่มค่าลำดับทีละหนึ่ง จึงไม่มีความสัมพันธ์ทางคณิตศาสตร์ระหว่างหลักที่สามารถใช้ตรวจได้
เหตุผลข้อที่สองคือการเปิดเผยสูตรไม่เกิดประโยชน์ต่อผู้ออก เพราะวัตถุประสงค์ของหมายเลขคือการอ้างอิง ไม่ใช่การป้องกันการปลอมแปลง สิ่งที่ผู้ออกสนใจคือความไม่ซ้ำกันของหมายเลข มากกว่าความสามารถของบุคคลภายนอกในการตรวจความถูกต้อง
เหตุผลข้อที่สามคือสูตรอาจมีอยู่แต่เอกสารไม่เปิดเผย หรือเปิดเผยเพียงบางส่วนให้คู่ค้าที่ลงทะเบียนแล้วเท่านั้น ในกรณีนี้สิ่งที่ระบบภายนอกทำได้คือบอกว่าตนไม่รู้ ไม่ใช่เดาสูตรขึ้นมา
ทั้งสามเหตุผลนำไปสู่ข้อสรุปเดียวกันว่าการมีอยู่ของสูตรเป็นเรื่องที่ต้องตรวจสอบจากเอกสารของระบบนั้นเอง ไม่สามารถอนุมานได้จากความคล้ายคลึงกับระบบอื่น
คำว่า รูปแบบเท่านั้น หมายถึงอะไร
คำตอบนี้หมายความว่ากระบวนการตรวจได้ดำเนินการจนสุดเท่าที่ระบบรู้จักแล้ว และผลที่ได้คือข้อมูลชุดนี้มีหน้าตาตรงกับสิ่งที่ระบบนั้นคาดไว้ แต่ยังมีอีกหลายชั้นที่ระบบไม่ได้ตรวจและตรวจไม่ได้
ความหมายที่ต่างจากคำว่าถูกต้องคือ ถูกต้องมักถูกอ่านว่าผ่านทุกชั้นที่มี ในขณะที่รูปแบบเท่านั้นบอกขอบเขตของคำตอบไว้อย่างชัดเจน ผู้ใช้อ่านแล้วรู้ทันทีว่าต้องยืนยันข้อมูลด้วยวิธีอื่นเพิ่มเติม
การเลือกใช้คำตอบนี้แทนคำว่าถูกต้องจึงไม่ใช่การถ่อมตัวเกินเหตุ แต่เป็นการให้ข้อมูลที่ตรงกับความจริงมากที่สุด และช่วยลดความเสี่ยงที่ผู้ใช้จะนำผลการตรวจไปใช้ตัดสินใจในเรื่องที่มันไม่รองรับ
หมายเลขที่มีแค่รูปแบบควรตรวจอย่างไร?
วิธีที่แนะนำคือแยกการทำงานเป็นสองช่วง ช่วงแรกคือการทำความสะอาดข้อมูล ซึ่งได้แก่การตัดช่องว่าง ขีดกลาง และอักขระที่มองไม่เห็นออก แล้วปรับตัวอักษรให้อยู่ในรูปเดียวกัน ช่วงที่สองคือการเทียบกับเกณฑ์ที่ระบบมีจริง ซึ่งได้แก่ความยาวและชุดอักขระ
สิ่งที่ต้องระวังคือเกณฑ์ความยาวต้องมาจากเอกสารของระบบนั้น ไม่ใช่จากการคาดเดา หากระบบยอมรับความยาวได้หลายช่วง ควรเก็บเป็นรายการความยาวที่ยอมรับได้ทั้งหมด และแจ้งผู้ใช้เมื่อค่าที่กรอกไม่อยู่ในรายการใด
อีกจุดที่ควรทำคือเก็บหมายเลขต้นทางไว้คู่กับค่าที่ปรับรูปแบบแล้ว เพราะเมื่อผลการตรวจถูกนำไปใช้ในภายหลัง ต้องอธิบายได้ว่าค่าที่เห็นในรายงานตรงกับค่าที่ผู้ใช้กรอกหรือไม่ ภาพรวมของลำดับชั้นการทำงานนี้อยู่ในหลักการของการตรวจสอบหมายเลข
การตรวจรูปแบบยังมีค่าตรงไหน
แม้ตรวจได้น้อยกว่ากรณีที่มีสูตร แต่การตรวจรูปแบบยังให้ประโยชน์หลายอย่าง อย่างแรกคือจับความผิดพลาดที่ชัดเจนที่สุด เช่นการพิมพ์ตกไปหนึ่งหลักหรือมีอักขระที่ไม่ควรมีปนเข้ามา ซึ่งเป็นความผิดพลาดที่เกิดบ่อยมากในข้อมูลที่คัดลอกจากเอกสาร
อย่างที่สองคือทำให้รูปแบบการจัดเก็บสอดคล้องกันทั่วระบบ เมื่อทุกหมายเลขถูกปรับให้อยู่ในรูปเดียวกัน การค้นหาและการจับคู่ข้อมูลจะเชื่อถือได้มากขึ้น
อย่างที่สามคือช่วยกำหนดเส้นทางของงานต่อ เมื่อข้อมูลผ่านด่านรูปแบบแล้ว ระบบจึงตัดสินใจได้ว่าควรส่งต่อไปยังการสอบถามกับแหล่งข้อมูลภายนอก หรือควรให้เจ้าหน้าที่ตรวจด้วยมือ
ประโยชน์ทั้งสามข้อนี้เป็นประโยชน์เชิงปฏิบัติ ไม่ได้เกี่ยวกับการยืนยันความจริงของหมายเลข จึงไม่ควรถูกนำเสนอราวกับว่าเป็นการยืนยันความจริง
สำหรับนักพัฒนา: เลือกถ้อยคำให้ตรงกับสิ่งที่รู้
ข้อเสนอที่ตรงที่สุดคือให้ผลลัพธ์มีอย่างน้อยสี่แบบ และให้แต่ละแบบผูกกับเหตุผลที่ตรวจสอบได้จริง
- ผ่านการตรวจของระบบที่มีสูตรครบถ้วน
- รูปแบบเข้าเกณฑ์ แต่ผลการคำนวณหลักตรวจสอบไม่สอดคล้อง
- ตรวจได้เพียงรูปแบบ เพราะระบบนั้นไม่มีสูตรให้คำนวณ
- ยังไม่มีกฎสำหรับข้อมูลชุดนี้
เมื่อมีสี่แบบแล้ว ข้อความที่แสดงต่อผู้ใช้ควรบอกด้วยว่าผลนั้นอ้างอิงระบบใด การบอกชื่อระบบทำให้ผู้ใช้ตรวจสอบต่อได้เอง และทำให้การสนทนากับฝ่ายสนับสนุนมีจุดเริ่มต้นที่ชัดเจน
สิ่งที่ต้องหลีกเลี่ยงคือการปล่อยให้คำตอบแบบที่สามกลายเป็นคำตอบแบบที่สองโดยไม่ตั้งใจ การรายงานว่าข้อมูลไม่ถูกต้องในกรณีที่ระบบเพียงไม่รู้จักกฎของหมายเลขนั้น เป็นการเปลี่ยนความไม่รู้ของระบบให้กลายเป็นข้อกล่าวหาต่อผู้ใช้ ซึ่งเป็นความผิดพลาดที่กระทบความเชื่อมั่นมากกว่าการบอกว่ายังตรวจไม่ได้ แนวทางแยกประเภทข้อผิดพลาดแบบเดียวกันนี้ปรากฏอีกครั้งเมื่อการตรวจย้ายไปอยู่ที่ขอบของระบบและส่วนติดต่อกับภายนอก หากต้องการดูว่าคำตอบแต่ละแบบแสดงต่อผู้ใช้อย่างไร เครื่องมือตรวจสอบจะระบุว่าระบบใดและกฎข้อใดถูกใช้ตัดสิน และขั้นตอนการตรวจสอบแบบกลุ่มอธิบายวิธีรายงานผลหลายประเภทพร้อมกัน
ก้าวต่อไป
เริ่มจากการสำรวจว่ามีหมายเลขประเภทใดในระบบของคุณที่ถูกตอบด้วยคำว่าไม่ถูกต้อง ทั้งที่ความจริงคือยังไม่มีกฎรองรับ หากพบ ให้เปลี่ยนคำตอบนั้นก่อน เพราะผลกระทบต่อผู้ใช้รุนแรงกว่าที่เห็น
หมายเลขที่ยกมาในบทความนี้เป็นเพียงตัวอย่างสมมติสำหรับอธิบายความต่างระหว่างการตรวจรูปแบบกับการตรวจหลักตรวจสอบ ไม่มีการยืนยันความจริงของหมายเลขใด