У семи программистов адрес без дома |
25.06.2015 13:38 |
Все примеры по тестированию ориентируются на форму регистрации или числовое значение. А когда тестировщик приходит на работу и видит там строковое поле, начинается ступор — как тестировать? Какие там баги могут быть? Компания HumanFactorLabs опубликовала статью про примеры тестовых данных для тестирования... Адресов! Мы в HumanFactorLabs парсим адреса в особо крупных размерах. Наши продукты упрощают ввод контактных данных и работу с ними. Недавно нас попросили привести примеры необычных адресов, в связи с чем и написана эта статья. Номер дома — не число, а строкаНачнем с моего любимого места – города Электростали в Московской области. Как в любом уважающем себя городе, в нем есть проспект Ленина. Советское время кончилось, а проспект растёт и развивается. Недавно там построили новые дома. Строительство новых домов на этом проспекте было запланировано с его начала. Однако новую улицу решили не делать, а продлить проспект Ленина, прибавив цифру 0 слева от номера новым домам. То есть адреса Электросталь пр Ленина 4 и Электросталь пр Ленина 04 — это два разных адреса. К сожалению, этот случай в России не единственный. Вывод: храните номер дома как строку, чтобы не потерять лидирующий ноль. Кстати, недавно нам пришёл такой адрес от клиента: 675018, Амурская, Моховая падь п, дом Л-1. Необычный дом, не правда ли? Мы не нашли его на картах, но он есть в ФИАС. Мы пока разбираемся, насколько корректно существование дома с лидирующей литерой, но вполне вероятно, что дом существует, так как его указал реальный клиент. Почтовый индекс важенБывает, что в городе две улицы называются одинаково. Например, в Москве две улицы 8 марта. Различить их можно только по индексу. Или, например, Россия, Архангельская область, Устьянский район, деревня Бережная на карте Яндекса встречается в трёх местах. Не знаешь индекс — письмо не дойдёт. Вывод: сохраняйте почтовый индекс объекта. Без типов никудаИндексы важны, но не всегда достаточны для определения улицы и даже населённого пункта. Бывает, что у разных населённых пунктов один и тот же почтовый индекс:
То есть крайне важно хранить тип населённого пункта. То же самое относится и к типам улиц: если в Яндексе набрать “Москва Пушкинская” и нажать “Найти”, то Яндекс покажет Пушкинскую набережную, хотя есть ещё улица и площадь. Вывод: сохраняйте тип населенного пункта и улицы. Бывают адреса без улицы. И даже без дома.Иногда мы встречаем адреса без улицы. Редко — в городах, чаще — в населённых пунктах. Адрес “Алтай, пгт Шебалино, дом 2” действительно существует (и там готовят вкусные пирожки). Случается, что у дома нет номера, только корпус. Так, например, живут люди в Зеленограде и микрорайоне Супонево в Звенигороде: Звенигород, Супонево, корп 1. Вывод: если при сохранении адреса в базу у вас включена проверка на пустые значения, то:
Бережно относитесь к литерамНомер дома определяет отдельное сооружение. Литеры — это строения, пристройки и т.п., находящиеся на территории дома. Например, если дом имеет номер 4, то его пристройка может иметь номер 4А1, подвал — 4Б1, забор — 4I, строение — 4В, щитовая в отдельном сооружении — 4Г. Детали скучным официальным языком, если захочется пруфов В связи с поступающими в адрес Управления вопросами о правилах использования обозначений при литеровке строений и сооружений разъясняем правила, принятые в технической инвентаризации. Правила литерования действуют по всей России, но только в Питере их особенно любят. Адрес, содержащий несколько литер, — нормальная ситуация для Питера: г. Санкт-Петербург ул. Маркина, д. 16Б, литера А. (Скриншот из Питера, сделан с карт © ДубльГИС — Городской Информационный Справочник) Некоторые литеры легко перепутать с номерами: литера З похожа на цифру 3 (как бы вы прочитали адрес Москва Звездный 23 с З?), литеру Ч в рукописном шрифте можно спутать с четвёркой. Литеры Й и Я выглядят как сокращения (Дом 4й — это 4 литер й или четвертый?). Можно разделять номер дома и литеру словом “литер”, чтобы адреса вроде Звездного бульвара воспринимались более однозначно. Например, так: Москва Звездный 23 литер З. Выводы:
На этом всё. В качестве примера посмотрите структуру ответа, который возвращает API Dadata.ru. При такой структуре хранения адреса описанные выше проблемы не должны вас коснуться. |