El formato del código es importante. Incluso la sangría importa . Y la consistencia es más importante que las mejoras menores. Pero los proyectos generalmente no tienen una guía de estilo clara, completa, verificable y aplicada desde el día 1, y las mejoras importantes pueden llegar cualquier día. Tal vez encuentres eso
SELECT id, name, address
FROM persons JOIN addresses ON persons.id = addresses.person_id;
podría escribirse mejor como / está mejor escrito que
SELECT persons.id,
persons.name,
addresses.address
FROM persons
JOIN addresses ON persons.id = addresses.person_id;
mientras trabaja en agregar más columnas a la consulta. Quizás esta sea la más compleja de las cuatro consultas en su código, o una consulta trivial entre miles. No importa cuán difícil sea la transición, usted decide que vale la pena. Pero, ¿cómo realiza un seguimiento de los cambios de código en los principales cambios de formato? Podría simplemente darse por vencido y decir "este es el punto en el que comenzamos de nuevo", o podría formatear todas las consultas en todo el historial del repositorio.
Si está utilizando un sistema de control de versiones distribuido como Git, puede volver a la primera confirmación y volver a formatear desde allí hasta el estado actual. Pero es mucho trabajo, y todos los demás tendrían que pausar el trabajo (o estar preparados para la madre de todas las fusiones) mientras continúa. ¿Existe una mejor manera de cambiar el historial que ofrezca el mejor de todos los resultados:
- Mismo estilo en todos los commits
- Mínimo trabajo de fusión
?
Para aclarar, esto no se trata de las mejores prácticas al comenzar el proyecto, sino más bien ¿qué se debe hacer cuando una refactorización grande se ha considerado una buena cosa ™ pero aún desea un historial rastreable? Nunca reescribir el historial es excelente si es la única forma de asegurarse de que sus versiones siempre funcionen igual, pero ¿qué pasa con los beneficios del desarrollador de una reescritura limpia? ¿Especialmente si tiene formas (pruebas, definiciones de sintaxis o un binario idéntico después de la compilación) para asegurarse de que la versión reescrita funcione exactamente de la misma manera que la original?