Địa chỉ Hoa Kỳ trông có vẻ là loại địa chỉ dễ xử lý nhất trong các hệ thống quốc tế, vì nó khá đều và tài liệu công khai nhiều. Nhưng chính vì trông dễ nên nó hay bị đơn giản hóa quá mức, và những lỗi phát sinh thường nằm ở mã bang, phần mở rộng của mã bưu chính, hoặc số căn hộ. Bài này đi qua từng phần của một địa chỉ Hoa Kỳ theo đúng thứ tự chúng xuất hiện khi in nhãn.
Một địa chỉ Hoa Kỳ gồm những dòng nào?
Một địa chỉ gửi thư điển hình có ba phần. Dòng đầu là số nhà cùng tên đường, kèm theo số căn hộ nếu có. Dòng thứ hai là thành phố, mã bang viết bằng hai chữ cái, và mã bưu chính. Dòng cuối là tên quốc gia, thường chỉ cần thiết khi gửi từ nước ngoài vào.
Thứ tự này đi từ nhỏ đến lớn, bắt đầu ở đơn vị hẹp nhất là căn nhà và kết thúc ở đơn vị rộng nhất là quốc gia. Điều đó đối lập trực tiếp với cách viết ở nhiều nước Đông Á, nơi địa chỉ mở đầu bằng tỉnh hoặc thành phố lớn. Nếu bạn đang xử lý nhiều quốc gia cùng lúc, hãy xem thêm bài định dạng địa chỉ quốc tế để đặt hai cách viết này cạnh nhau.
Số nhà, tên đường và số căn hộ
Số nhà đứng trước tên đường trong phần lớn trường hợp, đây là điểm khác biệt so với nhiều nước châu Âu nơi số nhà đứng sau. Tên đường có thể chứa cả chữ và số, chẳng hạn tên đường đánh số theo trục hoặc theo ô bàn cờ. Vì vậy, đừng viết quy tắc kiểm tra cho rằng tên đường chỉ gồm chữ cái.
Số căn hộ là phần dễ gây tranh cãi nhất. Nó có thể được viết bằng chữ viết tắt, bằng dấu thăng, hoặc tách hẳn ra một dòng riêng. Ba cách viết này cùng chỉ một giá trị, nhưng nếu hệ thống của bạn coi cả dòng đường là một khối văn bản, bạn sẽ không tách được số căn hộ để hiển thị riêng hay để sắp xếp danh sách giao hàng theo tòa nhà.
Vì sao không được tự viết tắt tên bang?
Mã bang là loại dữ liệu có chuẩn chính thức, và điều quan trọng nhất là đừng tự nghĩ ra cách viết tắt của riêng mình. Một mã do bạn tự đặt có thể trùng với mã của bang khác, hoặc không ai ngoài hệ thống của bạn hiểu được. Khi dữ liệu đi qua một đối tác vận chuyển hoặc một dịch vụ kiểm tra địa chỉ, mã đó sẽ bị coi là không hợp lệ.
Vấn đề thứ hai là tính duy nhất giữa các quốc gia. Mã hai chữ cái dùng cho bang của Hoa Kỳ không nhất thiết trùng với mã quốc gia hai chữ cái của một nước khác. Nếu bạn trộn hai loại mã này vào cùng một cột mà không có cột phân biệt, bạn sẽ tạo ra một lớp dữ liệu không thể kiểm tra tự động. Bài mã quốc gia và mã đơn vị hành chính giải thích rõ sự khác nhau giữa hai hệ thống mã này.
Mã bưu chính và những trường hợp đặc biệt
Mã bưu chính Hoa Kỳ có dạng cơ bản là năm chữ số, và có thể được ghi thêm bốn chữ số mở rộng để chỉ tới một nhóm địa chỉ hẹp hơn, thường được viết sau một dấu gạch nối. Hai phần này phục vụ hai mức phân loại khác nhau: phần đầu xác định khu vực, phần mở rộng thu hẹp phạm vi trong khu vực đó.
Khi lưu dữ liệu, bạn cần quyết định xem phần mở rộng là bắt buộc, tùy chọn, hay bị bỏ qua hoàn toàn. Trên thực tế, rất nhiều biểu mẫu chỉ nhận năm chữ số, và một số hệ thống vẫn chấp nhận cả hai dạng. Nếu bạn chọn chỉ nhận năm chữ số, hãy cắt phần mở rộng một cách có ý thức và ghi lại rằng dữ liệu đã bị rút gọn, thay vì để nó lọt vào cột rồi làm hỏng phép kiểm tra độ dài.
Địa chỉ quân sự và địa chỉ vùng lãnh thổ. Hai nhóm này thường bị bỏ sót khi thiết kế biểu mẫu. Địa chỉ quân sự dùng một hệ thống trung chuyển riêng, trong đó mã bưu chính và tên thành phố không mô tả một địa điểm dân sự thông thường. Vùng lãnh thổ cũng có thể dùng mã bưu chính và quy ước riêng, không trùng với các bang trong đất liền.
Hệ quả là nếu biểu mẫu của bạn kiểm tra chéo mã bang với mã bưu chính bằng một bảng chỉ gồm các bang, hai nhóm khách hàng này sẽ luôn bị báo lỗi dù họ nhập đúng. Cách xử lý phổ biến là cho phép một danh sách mã ngoài bảng tiêu chuẩn, kèm nhãn giải thích, thay vì từ chối thẳng.
Bang và mã bưu chính lệch nhau thì xử lý thế nào?
Đây là lỗi nhập liệu phổ biến nhất với địa chỉ Hoa Kỳ, và nó thường do người dùng chọn nhầm dòng trong danh sách gợi ý, hoặc do địa chỉ cũ sau khi chuyển nhà. Mã bưu chính thuộc một bang khác với bang đã chọn là dấu hiệu rõ ràng rằng một trong hai trường bị sai.
Trước khi chặn, hãy cân nhắc hậu quả. Nếu bạn chặn cứng, một số địa chỉ hợp lệ ở vùng giáp ranh sẽ không thể nhập, và khách hàng không có cách nào tự sửa nếu họ không biết mình sai ở đâu. Cách làm cân bằng hơn là cảnh báo và cho phép xác nhận, đồng thời ghi lại sự kiện này để theo dõi tần suất. Bài xác thực và chuẩn hóa địa chỉ đi sâu vào ranh giới giữa kiểm tra hình thức và kiểm tra sự tồn tại.
Tạo địa chỉ Hoa Kỳ để thử biểu mẫu
Nếu bạn cần mẫu để thử luồng đăng ký hoặc luồng thanh toán, trình tạo địa chỉ giả của trang này có thể sinh địa chỉ theo cấu trúc Hoa Kỳ, với các trường khớp nhau giữa thành phố, bang và mã bưu chính. Bạn có thể sinh nhiều mẫu liên tiếp để thử các trường hợp khác nhau, chẳng hạn khi địa chỉ có số căn hộ và khi không có.
Toàn bộ dữ liệu là tổng hợp, không trỏ tới một căn nhà có thật nào, và chỉ dùng cho kiểm thử phần mềm.
Phần dành cho nhà phát triển
Điều đáng làm sớm nhất là tách số căn hộ ra khỏi dòng đường ngay từ lúc lưu, thay vì để nó nằm lẫn trong một trường văn bản tự do. Khi đã tách, bạn mới có thể sắp xếp theo tòa nhà, in nhãn đúng chuẩn, và so khớp với dữ liệu trả về từ dịch vụ vận chuyển.
Những điểm khác nên chuẩn bị:
- Dùng bảng mã bang chuẩn và cập nhật bảng đó như dữ liệu, không phải như hằng số nằm rải rác trong mã nguồn.
- Kiểm thử ca mã bưu chính có phần mở rộng, ca chỉ có năm chữ số, và ca có dấu gạch nối bị người dùng gõ thành dấu cách.
- Chuẩn bị ca địa chỉ quân sự và địa chỉ vùng lãnh thổ, vì đây là hai nhóm dễ bị quy tắc chung chặn nhầm.
- Cho phép người dùng sửa khi cảnh báo lệch bang và mã bưu chính, thay vì chỉ hiện thông báo lỗi rồi dừng.
- Đặt giới hạn độ dài cho dòng đường đủ rộng, vì tên đường Hoa Kỳ có thể dài hơn nhiều so với dự đoán ban đầu.
Bước tiếp theo
Hãy mở trình tạo địa chỉ giả, chọn Hoa Kỳ, và sinh vài địa chỉ liên tiếp để thử biểu mẫu của bạn với các trường hợp có số căn hộ và không có. Sau đó kiểm tra xem hệ thống có cảnh báo được khi bang và mã bưu chính lệch nhau hay không, và ghi lại cách nó phản ứng.