用边界情况而不只是理想路径来测试位置数据
一个位于地图完善的市中心的地址,几乎无法告诉您系统如何处理乡村路线、有争议的边界或靠近两极的查询。请有意识地测试这些困难情况。
ISO 3166-1 为每个被承认的国家分配一个标准的两字母代码,它是位置软件中最接近“哪个国家”的通用、稳定标识符的东西。DE 代表德国,JP 代表日本,BR 代表巴西。它之所以被广泛使用,正是因为一旦了解该标准,它就简短、稳定且毫无歧义,这也正是我们的邮政编码查询要求在提供编码的同时使用它、而不是使用自由文本国家名称的原因。
ISO 3166-2 在此基础上向下延伸一级,为一个国家内部的行政区划分配代码,根据该国的组织方式,可以是州、省或地区。美国的州、加拿大的省和日本的县都以这种方式表示,每个都是一个将国家前缀与行政区划标识符组合在一起的代码。在任何需要一个稳定的“国家内哪个地区”标识符、而又不依赖于匹配在不同数据源中可能拼写、缩写或翻译各异的自由文本名称的场景中,这都很有用。
混淆通常出现在几个可以预见的地方。自由文本国家名称造成的不匹配最为明显,因为“United States”“USA”“U.S.”和“America”对人来说意思相同,但对期望精确字符串匹配的代码来说却并非自动如此,而这正是两字母代码所要消除的歧义。各国的行政区划结构也千差万别:有些国家整齐地划分为少量的州或省,另一些则使用多个行政层级,将“州”“省”或“县”等面向用户的标签映射到 ISO 3166-2 代码,并不是在每个国家都能一一对应的。
另一个常见的混淆来源,是把一个国家的顶级域名与其 ISO 代码混为一谈。两者经常一致,例如 .de 和 DE,但并非总是如此,把域名后缀当作国家代码的可靠替代品,迟早会在例外情况下产生错误的结果。
实用的建议是:只要您的系统与另一个系统(包括我们的系统)交互,就存储和传递 ISO 3166-1 代码,而不是自由文本国家名称;每当您需要一个稳定的标识符而不是显示标签时,就对行政区划使用 ISO 3166-2 代码。把人类可读的名称留给用户在屏幕上实际看到的内容,而在底层保留代码,用于任何需要可靠匹配的场景。
我们的邮政编码查询在接收邮政编码本身的同时,还接收一个 ISO 3166-1 alpha-2 国家代码,正是为了让请求毫无歧义,而不管国家名称在其他情况下可能如何书写。