Le formatage du code est important. Même l' indentation compte . Et la cohérence est plus importante que les améliorations mineures. Mais les projets ne disposent généralement pas d'un guide de style clair, complet, vérifiable et appliqué dès le premier jour, et des améliorations majeures peuvent arriver n'importe quel jour. Peut-être que vous trouvez ça
SELECT id, name, address
FROM persons JOIN addresses ON persons.id = addresses.person_id;
pourrait être mieux écrit comme / est mieux écrit que
SELECT persons.id,
persons.name,
addresses.address
FROM persons
JOIN addresses ON persons.id = addresses.person_id;
tout en travaillant sur l'ajout de colonnes à la requête. Il s'agit peut-être de la plus complexe des quatre requêtes de votre code, ou d'une requête triviale parmi des milliers. Peu importe la difficulté de la transition, vous décidez que cela en vaut la peine. Mais comment suivez-vous les changements de code à travers les principaux changements de formatage? Vous pouvez simplement abandonner et dire "c'est le point où nous recommençons", ou vous pouvez reformater toutes les requêtes dans tout l'historique du référentiel.
Si vous utilisez un système de contrôle de version distribué comme Git, vous pouvez revenir au tout premier commit et reformater votre chemin de là à l'état actuel. Mais c'est beaucoup de travail, et tout le monde devrait suspendre le travail (ou être prêt pour la mère de toutes les fusions) pendant qu'il se déroule. Existe-t-il une meilleure façon de changer l'historique qui donne le meilleur de tous les résultats:
- Même style dans toutes les commits
- Travail de fusion minimal
?
Pour clarifier, il ne s'agit pas des meilleures pratiques lors du démarrage du projet, mais plutôt de ce qui devrait être fait lorsqu'une grande refactorisation a été considérée comme une bonne chose ™ mais que vous voulez toujours une histoire traçable? Ne jamais réécrire l'historique est génial si c'est le seul moyen de s'assurer que vos versions fonctionnent toujours de la même manière, mais qu'en est-il des avantages pour les développeurs d'une réécriture propre? Surtout si vous avez des moyens (tests, définitions de syntaxe ou binaire identique après compilation) pour vous assurer que la version réécrite fonctionne exactement de la même manière que l'original?