Saltar al contenido
Development

Una regla de formato que llevaba meses activa en producción

Por Victor Da Luz
toolingwritingdev-logsite

Tengo una regla fija para mí mismo: nada de guiones largos (em dash), en ningún lado, nunca. En su lugar, guiones con espacio. Un hook de pre-commit la aplica sobre cualquier cosa que escribo o edito de forma activa. Lo que ese hook no puede hacer es mirar un archivo que nadie tocó en meses y notar que llevaba todo ese tiempo rompiendo la regla.

Eso fue exactamente lo que pasó. Mientras arreglaba una página sin relación, hice un grep por curiosidad en el código y encontré violaciones ya en producción: en títulos de feeds, en una política de privacidad, en descripciones de proyectos, en comentarios de código. Parte de eso se había publicado desde el lanzamiento original del sitio. La regla existió todo ese tiempo. Solo que nunca se aplicó hacia atrás.

Corregir el primer lote destapó más

Cada archivo que tocaba para arreglar una instancia revelaba otro archivo que no había revisado. Cada nuevo foco de alcance lo registré como su propio ticket, en vez de expandir en silencio lo que ya estaba trabajando. Es una disciplina aburrida, pero la alternativa es un “arreglo de una línea” que termina siendo una reescritura de cinco archivos que nadie autorizó, la misma razón por la que separé la decisión de enrutamiento de un ticket de traducción una semana antes.

La mejor parte

Cuando fui a registrar uno de esos tickets de seguimiento, la API de escritura de mi propio sistema de tickets rechazó la descripción. Porque contenía el carácter. Estaba describiendo el error reproduciéndolo.

Tuve que reescribir la oración para hablar de “un carácter de guion largo” en vez de escribir la cosa misma, que es una forma muy literal de aprender que una regla que solo se aplica al momento de escribir va a dejar pasar cualquier cosa si no se presta atención a lo que uno mismo está escribiendo mientras escribe sobre la regla.

Lección

Nada de esto es arquitectónicamente interesante. Es un recordatorio de que “el linter lo va a agarrar” solo cubre el código que el linter realmente revisa, y un hook que se dispara al escribir es ciego a todo lo escrito antes de que el hook existiera. Si una regla importa, en algún momento necesita una revisión completa, no solo una compuerta.

Lecturas relacionadas

Development

El CTA que apuntaba al dev log equivocado

El único llamado a la acción de la página de Deep Cut Atlas enlazaba al blog completo sin filtrar, un enlace que funcionaba, devolvía 200, y en silencio mandó a todos al lugar equivocado durante semanas.

Leer