Давно ми додали функцію, за якою наші користувачі могли "прийняти" зображення після того, як вони були додані до черги робочого процесу. Виявилося, ми використали неправильний термін, і користувачі насправді "затверджують" зображення.
Змінити Accept to Approve на нашому інтерфейсі досить просто, просто замініть одне слово. Але ми запрограмували всі шари на слово «прийняти», від назви класу CSS до значень бази даних.
- Клас CSS, який перетворює кнопку в зелений колір: ".accepted";
- Метод моделі, який перевіряє та прив'язує атрибут класу до вузла DOM: "isAccepted";
- Атрибут статусу JavaScript: масив із "непереглянутою", "прийнятою" та "опублікованою";
- Стовпець статусу Mysql: ENUM з "непереглянуто", "прийнято" та "опубліковано";
- Імена тестів;
Тривіально (особливо, коли у вас є тести) замінити більшість випадків прийому для затвердження. Трохи важче перенести дані, тим більше, що це потрібно синхронізувати з розгортанням.
Цей конкретний випадок простий, але я зіткнувся з подібними, але складнішими справами протягом своєї кар’єри. Коли файл також перейменований і розгортання відбувається на десятках серверів, або коли задіяно кешування проксі, memcached та mysql.
Залишати "прийнятим" на будь-якому іншому шарі, крім інтерфейсу, це погана ідея, оскільки нові програмісти, які приєднуються до команди, можуть не дізнатися історичних причин, що призвели до цього рішення, і поки прийняти -> схвалити - це близькі за змістом слова, якщо це було перейменовано на "чергову чергову зустріч із керівництвом", це, звичайно, не мало б сенсу. І це відчуває, якщо ми робимо компроміс тут і там, за декілька ітерацій поняття інтерфейсу користувача не матимуть підшипників до внутрішніх систем, і я, звичайно, не хочу працювати в системі, де половина виводу не має зв'язку з її внутрішніми.
Отже, чи завжди ви перейменовуєте все, коли потрібно? Якщо це трапилося з вами, і ви вирішили, що компроміс не вартий, чи повернувся ви, щоб вкусити вас? Чи достатньо коментаря до коду чи документації для розробників, щоб уникнути цього питання?