Давным-давно мы добавили функцию, с помощью которой наши пользователи могли «принять» изображение после его добавления в очередь рабочего процесса. Оказывается, мы использовали неправильный термин, и пользователи фактически «одобряют» изображение.
Изменить Accept для Approve в нашем интерфейсе легко, просто замените одно слово. Но мы запрограммировали все слои со словом «принять», от имени класса CSS до значений базы данных.
- Класс CSS, который превращает кнопку в зеленый цвет: ".accepted";
- Метод модели, который проверяет и связывает атрибут класса на узле DOM: "isAccepted";
- Атрибут статуса JavaScript: Массив с «не просмотрено», «принято» и «опубликовано»;
- Столбец состояния Mysql: ENUM с "не просмотрено", "принято" и "опубликовано";
- Тестовые имена;
Это тривиально (особенно если у вас есть тесты), чтобы заменить большинство случаев принятия для утверждения. Немного сложнее перенести данные, тем более что их необходимо синхронизировать с развертыванием.
Этот конкретный случай прост, но я сталкивался с подобными, но еще более сложными случаями, в моей карьере. Когда файл также переименовывается и развертывание происходит на десятках серверов или когда используется кэширование прокси, memcached и mysql участвуют.
Оставлять «принятым» на любом другом уровне, кроме интерфейса, - плохая идея, так как новые программисты, присоединяющиеся к команде, могут не узнать исторических причин, по которым это решение было принято, и хотя принять -> одобрить - близкие слова с точки зрения смысла, если это было переименовано в «Очередь для очередного управленческого совещания», это, конечно, не имело бы никакого смысла. И кажется, что если мы пойдем на компромисс, то через несколько итераций концепции пользовательского интерфейса не будут иметь отношения к внутренним частям системы, и я, конечно, не хочу работать в системе, где половина вывода не имеет связи с внутренностями.
Итак, вы всегда переименовываете все, когда нужно? Если это случилось с вами, и вы решили, что компромисс не стоит, он вернулся, чтобы укусить вас? Достаточно ли комментариев к коду или документации для разработчиков, чтобы избежать этой проблемы?