מבנה כתובת בארצות הברית נראה פשוט מבחוץ: מספר, רחוב, עיר, קיצור של מדינה ומיקוד. הפשטות הזאת היא הסיבה שטפסים רבים מטפלים בו גרוע—החלקים שנראים קבועים הם בדיוק החלקים שנושאים כללים, והחלקים שמשתנים הם אלה שאיש אינו משאיר להם מקום.
המאמר מפרק את המבנה שדה אחר שדה, מכסה את מספר היחידה ואת הרחבת המיקוד, ומסביר מדוע כתובות צבאיות וטריטוריאליות קיימות מחוץ לתבנית שרוב המפתחים מצפים לה.
החלקים של כתובת בארצות הברית
כתובת דואר מקומית בנויה מקבוצה קטנה של רכיבים, המסודרים בדרך כלל על פני שלוש או ארבע שורות.
| רכיב | מה הוא מכיל | הערות |
|---|---|---|
| שורת הרחוב | מספר בית, שם רחוב, סוג רחוב, כיוון | סוג הרחוב הוא חלק מן השם ולא קישוט |
| שורת היחידה | דירה, סוויטה, קומה, בניין | רשותית, ובמוסכמה על שורה נפרדת |
| עיר, מדינה, מיקוד | עיירה או עיר, קוד מדינה בשתי אותיות, מיקוד | קוד המדינה תקני; אין להמציא אחד |
| מדינה | רק בדואר בין לאומי | נשמט בתוך המדינה עצמה |
לשורת הרחוב עצמה יש סדר פנימי ששווה להכיר: קידומת כיוונית, שם הרחוב, סוג הרחוב, וסיומת כיוונית היכן שקיימת. מספר הבית מוביל. הסדר הזה הוא מוסכמה של המדינה ולא מוסכמה אוניברסלית, ומכאן שאותו בניין מופיע במדינות אחרות עם המספר בסוף, כפי שמפרט המדריך לתבנית כתובת בין לאומית.
מספרי בתים, סוגי רחובות וכיוונים
מספר הבית הוא מספר שלם מוביל, והוא באמת מספר במובן זה שצד אי זוגי וצד זוגי חשובים למסירה—אבל הוא אינו כמות, והתייחסות אליו ככמות מייצרת סוג משל עצמו של תקלות. קיימים טווחים, קיימות סיומות אלפא נומריות, ורחוב אחד יכול לשאת מספרים שאינם רציפים כשהוא חוצה גבול עירוני.
סוגי רחובות הם מילים כמו רחוב, שדרה, דרך, כביש, מבוא או סמטה, והם באים בדרך כלל אחרי השם. מרכיבים כיווניים כמו צפון, דרום, מזרח ומערב יכולים להופיע לפני השם, אחרי הסוג, או בשני המקומות. בכתיב מלא ובקיצור יש לאותה כתובת כמה צורות נכונות, ובדיוק משום כך מפעילי הדואר מתחזקים טבלאות קיצורים, ומשום כך טופס צריך לנרמל ולא לדרוש צורה מסוימת אחת.
עבור נתוני בדיקה התוצאה השימושית היא ששורת הרחוב היא השדה שסביר ביותר לחרוג מן האורך הצפוי, משום שהיא מצטברת לתוכה קידומת כיוונית, שם רב מילים, סוג רחוב ולעיתים גם מסייג יחידה במחרוזת אחת.
איך כותבים מספר דירה או סוויטה?
יש להציב אותו על שורה משל עצמו, או אחרי שורת הרחוב מופרד בתו סימון ברור, ולתייג אותו במילה המקומית: דירה, יחידה, סוויטה, קומה, בניין. סגנון הקיצור הולך אחרי אותן טבלאות מוסכמות כמו סוג הרחוב, ולכן עקביות חשובה יותר מקיצור.
שאלת ההדגלה היא אם היחידה שייכת לשדה הרחוב או לשדה משלה. יש להשאיר אותה נפרדת. פרט יחידה שמתווסף לשורת הרחוב הופך את הרחוב לקשה יותר להתאמה מול כל רשימת כתובות ובלתי ניתן לחיפוש אמין, והוא הדבר הראשון שהולך לאיבוד כששדה נחתך. הוא גם יוצר עמימות בכיוון ההפוך: מספר בניין ומספר יחידה הכתובים זה אחר זה נראים כמו חלק מכתובת רחוב ארוכה יותר לכל מפרסר שקורא מן השמאל.
עבור מקרי בדיקה בעלי נגיעה למסירה, שני הווריאנטים ראויים למערך בדיקות: כתובת בלי יחידה כלל, וכתובת עם פרט יחידה ארוך. מערכות רבות נכשלות בשקט בשנייה.
מה משמעות קיצור המדינה והמיקוד
רכיב המדינה הוא קיצור בן שתי אותיות הלקוח מתקן רשמי, והוא אינו שדה טקסט חופשי. המצאת קיצור, כתיבת שם המדינה במלואו במקום שבו מצפים לקוד, או שימוש בקוד ששייך למקום אחר—כל אלה מייצרים נתונים שנראים סבירים ונכשלים אחר כך. המשפחה הרחבה של קודי מדינות וחלוקות, וההבדל בין התקן הבין לאומי לרשימות קודים מקומיות, מכוסים במדריך לקודי מדינה וחלוקה לפי ISO.
המיקוד הוא חמש ספרות, שלעיתים אחריהן רחבה בת ארבע ספרות שמצמצמת את הקוד לקבוצת מסירה קטנה יותר. שתי הצורות תקפות; הרחבה רשותית למעשה, וטפסים שמחייבים אותה מרגיזים משתמשים שאינם יודעים את שלהם. יש להתייחס לכל זה כטקסט. מיקוד הוא מזהה, והאפסים המובילים שמשתמשים בהם בחלקים מסוימים של המדינה נעלמים ברגע שעמודה מספרית משתלטת עליו, כפי שמסביר באריכות המדריך לתבניות מיקוד לפי מדינה.
מבחן העקביות הקלאסי מזווג את השניים. קיצור מדינה שאינו מתאים לטווח המיקודים של אותה מדינה הוא אחת משגיאות הקלט הנפוצות ביותר בנתוני כתובת בארצות הברית, והוא זול לגילוי.
האם כתובות טריטוריאליות וצבאיות פועלות לפי אותם כללים?
חלקית. כתובות בטריטוריות של ארצות הברית משתמשות באותה צורה כללית אבל עם קודים משלהן המקבילים לקוד מדינה ועם טווחי מיקוד משלהן, ולכן רשימת אימות שנבנתה רק מחמישים המדינות תדחה אותן למרות שהן ניתנות למסירה באופן מלא. לדואר צבאי יש מבנה משל עצמו גם כן, עם ציון ניתוב וקוד שממלא את תפקיד העיר והמדינה בדואר מקומי.
המסקנה הנכונה אינה לבנות רשימה ארוכה יותר של מקרים מיוחדים מקודדים בתקווה שהיא שלמה. היא לקבל שקבוצת הקודים התקפים גדולה מן המוכרת, לקחת את הרשימה ממקור סמכותי במקום להקליד אותה ביד, ולגרום לאימות להיכשל באופן שהמשתמש יכול לתקן.
למפתחים: אימות החלקים בסדר הנכון
יש לבדוק את החלקים ולא את השורה כולה. ביטוי רגולרי אחד שמנסה לאמת מחרוזת כתובת אמריקאית שלמה הוא הטעות הנפוצה ביותר בתחום הזה, משום שהשונות יושבת בשורת הרחוב והוודאות יושבת בקוד המדינה ובמיקוד.
סדר מעשי: לדרוש מדינה כדי שקבוצת הכללים תהיה ידועה, לבדוק שקוד המדינה קיים ברשימה הרשמית, לבדוק שהמיקוד תואם את הצורה שלו, ואחר כך לבדוק את הזיווג ביניהם. את שורת הרחוב יש להשאיר לבדיקות אורך ותווים, ולאפשר לאדם לעקוף כשל, משום שכתובת נכונה באמת שכלי בדיקה אינו מזהה לא אמורה להיות בלתי ניתנת לתיקון.
שני מערכי בדיקה מכסים את רוב הסיכון: כתובת אחת תקפה בכל מובן, ואותה כתובת עם אי התאמה מכוונת אחת בין המדינה למיקוד. הזוג הזה הופך לברור ברגע ששינוי באימות מתחיל לקבל הכול בטעות.
צעדים הבאים
יש לקחת כתובת אמריקאית אחת מנתוני סביבת ההרצה ולפצל אותה לשדות ביד; אם אין אפשרות לומר באופן חד משמעי איזה טקסט שייך ליחידה ואיזה לרחוב, מערכי הבדיקות מסתירים בעיית הדגלה. אחר כך יש להפיק קבוצה קטנה של דוגמאות אמריקאיות במחולל הכתובות ולהריץ אותן דרך הטופס, ובהן אחת עם פרט יחידה ארוך ואחת שהמדינה והמיקוד שלה חלוקים במכוון. כדאי לזכור מה הן הדוגמאות שעוברות: ערכי מציין מקום לבדיקות תוכנה, לא דואר הניתן למסירה ולא ראיה למקום מגוריו של איש.