Есть у нас в базе таблица, где хранится плоская запись. Точнее, хранилась, теперь там
BLOB. Но не суть. В плоской записи 600 полей, которые называются
field_1, field_2... field_600.
В коде зашит меппинг этих филдов на нормальные названия:
<entry key="cat" value="6"/>
<entry key="dog" value="13"/>
...
<entry key="human" value="15"/>
Файлик с меппингом назовем... Ну, допустим, р2о (plain to object). Он с хитринкой — так как в java отсчет начинается с нуля, а не с единицы, то к value надо было добавить 1, чтобы получить
field в базе. Вот, например,
key="cat" → в базе это был
field_7.
Сами по себе поля
field_* проблем не приносили, потому что обычно база заполнялась из файликов, а дальше уже темная магия все разруливала и сразу красота! А вот в автотестах всегда черт ногу сломит. Открываешь тест, тебе надо поправить фамилию. А у тебя на входе эти 600 полей. И в каждой сборке свой меппинг. Где-то фамилия — это номер 2, где-то номер 4, где-то 6, и так далее.
И вот ты такой открываешь тест, который надо поправить. Открываешь р2о. Находишь там нужное тебе поле. Сидишь, тупишь, вспоминая, надо от
value отнять единичку или прибавить... Правишь тест. Профит! Но затупы на «отнять или прибавить» особенно раздражали.
А уж если кто-то внес изменения в р2о! Изменил одно поле? Все, гудбай все тесты → рассыпались как карточный домик, надо ходить и уныло актуализировать. Так как актуализацией занималась я, то и страдала тоже я
Страдала я громко, плакалась на митингах и в чатике:
— Опять тесты развалились из-за р2о. Давайте сделаем так, чтобы они не падали??
— Оля, отстань! Зачем тратить на это ресурсы? Не так уж часто р2о меняется. Один раз в год подняла тесты, это проще, чем тратить пару дней разработчика.
В общем, в случае пожара — горите.
Тебе тяжело? Ты и страдай