Hace mucho tiempo agregamos una función en la que nuestros usuarios podían "Aceptar" una imagen después de agregarla a una cola de flujo de trabajo. Resulta que usamos el término incorrecto y los usuarios realmente "aprueban" la imagen.
Cambiar Aceptar para aprobar en nuestra interfaz es fácil, solo reemplace una palabra. Pero programamos todas las capas con la palabra "aceptar", desde el nombre de la clase CSS hasta los valores de la base de datos.
- La clase CSS que activa el botón en verde: ".accepted";
- El método modelo que verifica y vincula el atributo de clase en el nodo DOM: "isAccepted";
- Atributo de estado de JavaScript: matriz con "sin revisar", "aceptado" y "publicado";
- Columna de estado de MySQL: ENUM con "no revisado", "aceptado" y "publicado";
- Nombres de prueba;
Es trivial (especialmente cuando tiene pruebas) reemplazar la mayoría de los casos de aceptar para aprobar. Un poco más difícil es migrar los datos, especialmente porque deben sincronizarse con la implementación.
Este caso específico es simple, pero me he enfrentado a casos similares, pero más complejos, durante mi carrera. Cuando también se cambia el nombre de un archivo y la implementación se realiza en docenas de servidores, o cuando el almacenamiento en caché de proxy, memcached y mysql están involucrados
Dejar "aceptado" en cualquier otra capa, excepto la interfaz, es una mala idea, ya que los nuevos programadores que se unen al equipo podrían no conocer las razones históricas que llevaron a esta decisión, y si bien aceptar -> aprobar son palabras cercanas en términos de significado, si es que fue renombrado como "en cola para la próxima reunión de estado gerencial", ciertamente no tendría ningún sentido. Y parece que si nos comprometemos aquí y allá, en algunas iteraciones, los conceptos de la interfaz de usuario no tendrán relación con los componentes internos del sistema, y ciertamente no quiero trabajar en un sistema donde la mitad de la salida no tiene conexión con sus entrañas.
Entonces, ¿siempre cambias el nombre de todo cuando lo necesitas? Si esto te sucedió y decidiste que la compensación no valía la pena, ¿volvió a morderte? ¿Es suficiente el comentario de código o la documentación del desarrollador para evitar este problema?