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