Коли ти робиш публічне апі — ти підписуєшся на зворотню сумісність. Публічне — це не тільки апі для широкого загалу, це й:
- те, що ти видав мобільним аппкам — вони ж можуть роками не оновлюватись
- схема обміну між кількома сервісами
- схема бд, у якої є кілька клієнтів — а під час апгрейду сервісу вочевидь різні версії треба рахувати різними клієнтами
- бібліотека, що ти виклав на гітхабі
- та й таке інше
А що значит підписуєшся? Це значить, що якщо ти притомна людина, зворотню сумісніть ти ламати не будеш. Не будеш видаляти поля. Не будеш перейменовувати стовпчики у базі даних. Не будеш змінювати у меншу сторону сігнатуру функції.
Чому? Тому що це зменшує кількість страждань у світі. Апка не перестане працювати. Сервіси не зламаються і їх не треба буде лагодити. Клієнти БД не помітять ваших змін. Краса!
Насправді, коли це внутрішня штука, то змінювати можна все, просто у кілька релізів. Хочеш перейменувати поле з uuid
на id
у повідомленнях сервісу А так, що сил немає? Випускаєш сервіс Б, який читає обидва поля, а потім вже сервіс А з перейменуванням. А потім ще можна закріпити релізом сервісу Б, який тільки другу назву читає.
Коли таких споживачів штук 3-5, перейменовувати поле не хочеться. І не треба. :)
Можна вчитися у Clojure: береш якийсь код на гітхабі, який 8 років не торкалися, а він працює. Фантастика!