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