Conventions convenues qui réduisent les frictions et permettent la propriété collective.
Les normes de codage sont des ententes d'équipe sur la façon dont le code devrait être écrit :
Les normes permettent la propriété collective. Quand le code se ressemble partout, n'importe qui peut lire n'importe quel code. Il n'y a pas de « traduction » entre le style de Bob et celui d'Alice.
Les normes réduisent aussi les frictions lors de la révision de code. Au lieu de débattre du formatage, vous discutez de la logique et de la conception. Les débats futiles disparaissent.
Sans normes : Chaque fichier semble différent. Se déplacer entre les modules nécessite un changement de contexte mental. La révision de code devient une guerre de styles.
Avec des normes : La base de code semble unifiée. Lire du code inconnu est plus facile. Les révisions se concentrent sur ce qui compte.
La norme spécifique importe moins que d'avoir une norme. Choisissez quelque chose de raisonnable et tenez-vous-y.
Toutes les conventions ne sont pas égales. Distinguez entre :
Normes sémantiques : Affectent le comportement du code ou sa maintenabilité
Normes stylistiques : Affectent seulement l'apparence
Les normes sémantiques méritent discussion. La façon dont l'équipe gère les erreurs est une décision significative avec de vraies conséquences.
Les normes stylistiques devraient être automatisées. Utilisez Prettier, Black, gofmt — des outils qui formatent le code automatiquement. Ne gaspillez pas de temps humain sur tabulations vs espaces.
L'objectif est de retirer les frictions, pas d'atteindre un idéal platonicien du style de code.
L'outillage moderne peut appliquer la plupart des normes automatiquement :
Formateurs : Prettier (JavaScript), Black (Python), gofmt (Go), rustfmt (Rust)
Analyseurs : ESLint, Pylint, Clippy, RuboCop
Vérificateurs de types : TypeScript, mypy, Flow
Crochets de pré-commit : Husky, pre-commit
Configurez une fois, appliquez pour toujours. Ne comptez pas sur la discipline humaine — automatisez-la.
L'équipe utilise Prettier avec une configuration partagée. Chaque commit déclenche le formatage. La révision de code ne mentionne jamais le formatage — elle se concentre simplement sur la logique et la conception.
L'équipe a un guide de style de 50 pages. Les réviseurs passent la moitié de leur temps à signaler les violations de style. Les développeurs en veulent aux critiques mesquines. Les nouveaux membres de l'équipe ont du mal à apprendre toutes les règles.
Les normes peuvent déclencher des opinions fortes. Évitez les débats sans fin :
Commencez avec les conventions existantes. Si le langage ou le framework a un style standard (Go, Rust), utilisez-le simplement. Ne réinventez pas.
Utilisez les valeurs par défaut de l'industrie. Les configurations populaires d'analyseurs/formateurs (Airbnb ESLint, guide de style Google) ont fait leurs preuves.
Décidez rapidement, ajustez plus tard. Choisissez quelque chose de raisonnable. Si ça s'avère problématique, changez-le. Ne bloquez pas le progrès en attendant la norme parfaite.
Rendez-le démocratique mais décisif. Laissez l'équipe voter sur les questions litigieuses. La majorité l'emporte. La minorité accepte la décision.
Rappelez-vous l'objectif. Les normes existent pour réduire les frictions, pas pour exprimer des préférences. Si une discussion prend trop de temps, n'importe quel choix raisonnable convient.
N'optimisez pas prématurément
Passer une semaine à débattre des points-virgules n'est pas une bonne utilisation du temps. Choisissez un formateur et passez à autre chose.
Les normes devraient être documentées — mais gardez-les vivantes :
Quoi documenter :
Où documenter :
Gardez-la à jour. Une documentation désuète est pire que pas de documentation. Quand vous changez une norme, mettez à jour la documentation.
Rendez-la trouvable. Les nouveaux membres de l'équipe devraient trouver les normes facilement. Ne les enterrez pas dans un labyrinthe de wiki.
La meilleure documentation est le code lui-même. Si vos normes sont appliquées automatiquement, le code démontre ce qui est acceptable.