4dim / Notas

Un glifo copiado en dos sitios no es una salvaguarda

Un comentario pidiendo que quien toque una copia se acuerde de la otra no impide nada: es una nota. Cuando la duplicación tiene una razón real, qué parte se saca y qué parte se queda en cada sitio.

«Si tocas este, acuérdate del otro»

Si en tu código hay algo duplicado con un comentario pidiendo que se mantengan iguales, esta nota es sobre por qué ese comentario no funciona y qué se hace en su lugar. Con un ejemplo donde la duplicación era inevitable.

En nuestro código había dos copias del mismo dibujo: los iconos del menú lateral. Y encima de cada una, un comentario pidiendo que quien tocara una se acordara de la otra, «o el raíl parpadea al navegar del sitio a la app».

Eso no es una salvaguarda. Es una nota.

La diferencia importa. Una salvaguarda impide el error: el programa no compila, la prueba falla, el despliegue no sale. Una nota confía en que alguien la lea en el momento exacto en que está haciendo otra cosa. Seis meses después, ese alguien es otra persona.

Por qué había dos copias

Lo interesante es que la duplicación tenía una razón de verdad, que es lo que la hacía difícil de quitar.

Los mismos iconos se pintan en dos sitios que no se parecen en nada:

  • En la aplicación, con la biblioteca moderna que usa todo el producto, construyendo elementos en el servidor.
  • En el sitio público, con un guion suelto de JavaScript antiguo, escrito a mano, que corre antes de que llegue nada más.

La segunda parte es la que obliga. Ese menú tiene que estar pintado desde el primer instante: si esperara a que cargue la biblioteca, el visitante vería el hueco y después el menú apareciendo. Y al navegar del sitio público a la aplicación, el menú parpadearía, porque se estaría redibujando con otra cosa.

Compartir lo que de verdad es lo mismo

Si las dos formas de pintar son irreconciliables, ¿qué se comparte?

La respuesta está en separar el dato del dibujo. Un icono es dos cosas: unos trazos —las coordenadas de las líneas— y un envoltorio que los convierte en algo visible.

Los trazos son idénticos en los dos casos: una lista de cadenas. Eso se puede compartir, y es lo único que hay que mantener sincronizado.

El envoltorio no puede compartirse: uno construye elementos, el otro concatena texto. Y no hace falta que se comparta, porque es mecánico —el mismo lienzo, el mismo grosor de trazo— y cambia casi nunca.

Pieza¿Es lo mismo?¿Se comparte?
Los trazosIdénticosSí, en un solo sitio
El envoltorioDistinto por tecnologíaNo, cada uno el suyo

Esa es la operación general: cuando algo parece duplicado y no se puede unificar, busca la parte que sí es literalmente idéntica y saca solo esa. Suele ser el dato, no el código.

Y ya que están juntos, que digan algo

Un apunte que no es técnico y que vale para cualquiera que elija iconos.

Nuestro icono del asistente es un trípode: el asiento de tres patas de la pitia de Delfos. Tres patas de las que una se ve de frente y dos se abren a los lados, que es la proyección plana de un objeto de tres dimensiones.

Lo que no es: una chispa ni una estrella de destello. Esos dos se han convertido en el icono universal de «esto lleva inteligencia artificial», hasta el punto de que ya no distinguen nada. Cuando todos los productos usan el mismo símbolo, el símbolo deja de informar.

Y el de conversación es un globo dibujado a escuadra, no a mano alzada, porque así dibuja el resto del sistema. Un icono que no sigue la geometría de los demás se lee como pegado de otro sitio, aunque nadie sepa decir por qué.

El catálogo de salvaguardas de verdad

Volviendo al principio: cuando encuentres un comentario que pide que alguien se acuerde de algo, la pregunta es qué salvaguarda lo sustituye. Hay tres niveles, de peor a mejor.

  • Una nota. No hace nada. Es la situación de partida.
  • Una prueba. Falla al ejecutarla. Sirve si alguien la ejecuta, y si está en el sistema de integración continua, siempre.
  • Una imposibilidad. El dato existe una sola vez, así que no hay nada que sincronizar. Es la de arriba, y se busca primero.

Cuando la tercera es posible, las otras dos sobran. Aquí lo era: los trazos pasaron a vivir en un sitio y el comentario desapareció, porque ya no hay nada de lo que acordarse.

Qué hacer entonces

  • Busca en tu código los comentarios que piden acordarse. Cada uno señala un fallo futuro con su fecha sin poner.
  • Antes de unificar, comprueba si se puede. A veces la duplicación tiene una razón real, y quitarla rompe algo.
  • Saca solo la parte literalmente idéntica. Suele ser el dato, no el código que lo usa.
  • Si no puedes unificar, escribe una prueba. Una nota no es una salvaguarda.
  • Y si eliges iconos: huye de la chispa. Cuando todos usan el mismo símbolo, el símbolo ya no dice nada.

Esta nota sale de nuestro trabajo en Desarrollo web.

← todas las notas