Il y a longtemps, nous avons ajouté une fonctionnalité permettant à nos utilisateurs d'accepter une image après son ajout à une file d'attente de flux de travail. Il s'avère que nous avons utilisé le mauvais terme et que les utilisateurs "approuvent" l'image.
Changer d'accepter pour approuver sur notre interface est facile, il suffit de remplacer un mot. Mais nous avons programmé toutes les couches avec le mot "accept", du nom de la classe CSS aux valeurs de la base de données.
- La classe CSS qui fait passer le bouton en vert: ".accepted";
- La méthode de modèle qui vérifie et lie l'attribut de classe sur le noeud DOM: "isAccepted";
- Attribut d'état de JavaScript: Tableau avec "non examiné", "accepté" et "publié";
- Colonne Mysql status: ENUM avec "non examiné", "accepté" et "publié";
- Noms de test;
Il est trivial (surtout lorsque vous avez des tests) de remplacer la plupart des occurrences d’accepter d’approuver. Un peu plus difficile consiste à migrer les données, en particulier car elles doivent être synchronisées avec le déploiement.
Ce cas particulier est simple, mais j’ai été confronté à des cas similaires mais plus complexes au cours de ma carrière. Lorsqu'un fichier est également renommé et qu'un déploiement est effectué sur des dizaines de serveurs, ou lorsque la mise en cache du proxy, memcached et mysql sont impliqués.
Laisser "accepté" sur toutes les autres couches, à l'exception de l'interface, est une mauvaise idée, car les nouveaux programmeurs qui rejoignent l'équipe risquent de ne pas connaître les raisons historiques qui ont conduit à cette décision. a été renommé "mis en file d'attente pour la prochaine réunion sur le statut de la direction", cela n'aurait aucun sens. Et nous pensons que si nous faisons des compromis ici et là, dans quelques itérations, les concepts d'interface utilisateur n'auront aucune incidence sur les internes du système, et je ne souhaite certainement pas travailler sur un système où la moitié de la sortie n'a aucun lien avec ses entrailles.
Alors, est-ce que vous renommez toujours tout quand vous en avez besoin? Si cela vous arrivait et que vous décidiez que le compromis ne valait pas la peine, est-ce que cela vous est arrivé de vous mordre? Les commentaires de code ou la documentation destinée aux développeurs sont-ils suffisants pour éviter ce problème?