Clean code et refactoring - 00 - Pourquoi le clean code est un investissement, pas un luxe

Le clean code n'est pas une lubie de perfectionniste. C'est un investissement mesurable qui réduit les coûts de maintenance et accéléré les livraisons.

  1. 01 Clean code et refactoring - 00 - Pourquoi le clean code est un investissement, pas un luxe
  2. 02 Clean code et refactoring - 01 - Nommage : la competence la plus sous-estimee
  3. 03 Clean code et refactoring - 02 - Fonctions : courtes, claires, responsables
  4. 04 Clean code et refactoring - 03 - Conditions et lisibilité : sortir de la pyramide
  5. 05 Clean code et refactoring - 04 - Commentaires et documentation : quand le code ne suffit pas
  6. 06 Clean code et refactoring - 05 - Immutabilite et effets de bord : moins de surprises, moins de bugs
  7. 07 Clean code et refactoring - 06 - Gestion des erreurs propre : fail fast, fail loud
  8. 08 Clean code et refactoring - 07 - Programmation defensive vs offensive : valider aux frontieres, faire confiance a l'intérieur
  9. 09 Clean code et refactoring - 08 - SOLID en pratique avec TypeScript
  10. 10 Clean code et refactoring - 09 - DRY, KISS, YAGNI
  11. 11 Clean code et refactoring - 10 - Couplage et cohesion
  12. 12 Clean code et refactoring - 11 - Complexite cyclomatique
  13. 13 Clean code et refactoring - 12 - Abstractions prematurees vs tardives
  14. 14 Clean code et refactoring - 13 - Code smells
  15. 15 Clean code et refactoring - 14 - Techniques de refactoring
  16. 16 Clean code et refactoring - 15 - Refactoring legacy sans tout casser
  17. 17 Clean code et refactoring - 16 - Tests comme filet de sécurité pour le refactoring
  18. 18 Clean code et refactoring - 17 - Structurer un projet — feature-based vs layer-based
  19. 19 Clean code et refactoring - 18 - Constantes, configuration et magic numbers
  20. 20 Clean code et refactoring - 19 - Linting et formatting — ESLint, Biome, automatiser la qualité
  21. 21 Clean code et refactoring - 20 - Conventions d'équipe et ADR
  22. 22 Clean code et refactoring - 21 - Dette technique — quand elle est acceptable, quand elle tue le projet
  23. 23 Clean code et refactoring - 22 - Code review — donner et recevoir du feedback
  24. 24 Clean code et refactoring - 23 - Glossaire — tous les termes de la serie

00 - Pourquoi le clean code est un investissement, pas un luxe

Ce que tu vas apprendre

  • Pourquoi le code sale coûte cher (avec des chiffres)
  • Pourquoi "on corrigera plus tard" est un mensonge
  • Ce que le clean code est (et ce qu'il n'est pas)
  • Le pragmatisme avant le dogmatisme
  • Ce que cette serie de 23 articles couvre

Prerequisites

Aucun. C'est le point de depart de la serie.


En 2021, j'ai rejoint une équipe qui bossait sur une application de gestion d'inventaire. Le projet avait trois ans. Le premier jour, j'ai ouvert le fichier principal du backend. 4 200 lignes. Un seul fichier. Des variables nommees x, tmp, data2. Des fonctions de 300 lignes avec 12 paramètres. Des commentaires du type // TODO: fix this later dates de 2019.

J'ai demande a l'équipe combien de temps il fallait pour ajouter un nouveau champ a un produit. La réponse : deux semaines. Pour un champ. Le projet etait devenu un cauchemar ou chaque modification provoquait des regressions en cascade.

Ce n'etait pas un problème de technologie. C'etait un problème de code sale accumule pendant trois ans.

Le coût réel du code sale

Les chiffres sont sans appel. Selon une etude de Stripe publiee en 2018, les développeurs passent en moyenne 42% de leur temps a gerer de la dette technique et du code de mauvaise qualité. A l'échelle mondiale, ca represente 85 milliards de dollars par an en productivité perdue.

Le rapport CISQ (Consortium for Information and Software Quality) de 2022 estime le coût de la mauvaise qualité logicielle aux États-Unis a 2 170 milliards de dollars. Ce chiffre inclut les defaillances operationnelles, les projets echoues et la dette technique.

Ca fait mal. Et ca ne concerne pas que les grosses entreprises. Meme sur un projet perso ou une startup, le code sale ralentit. D'abord un peu. Puis beaucoup. Puis complètement.

"On corrigera plus tard" : le plus gros mensonge du dev

Tu l'as dit. Je l'ai dit. On l'a tous dit. "On livre ca comme ca, on refactorisera dans le prochain sprint." Ce sprint n'arrive jamais. Le backlog de dette technique grossit. Les nouveaux devs arrivent, voient le code existant, et reproduisent les memes patterns parce que "c'est comme ca qu'on fait ici".

Le code sale engendre du code sale. C'est la theorie de la vitre brisee appliquee au logiciel : si le code autour est degueulasse, tu n'as aucune motivation pour écrire du code propre. A quoi bon ?

Le moment le moins cher pour écrire du code propre, c'est maintenant. Pas demain. Pas au prochain sprint. Maintenant.

Ce que le clean code est (et ce qu'il n'est pas)

Le clean code, ce n'est pas :

  • Écrire du code "beau" ou "elegant"
  • Suivre aveuglément toutes les regles d'un livre
  • Passer trois heures a nommer une variable
  • Atteindre 100% de couverture de tests
  • Refactoriser du code qui marche sans raison

Le clean code, c'est :

  • Du code que ton collegue (ou toi dans 6 mois) peut lire et comprendre rapidement
  • Du code ou les bugs sont faciles a localiser
  • Du code ou ajouter une feature ne casse pas trois features existantes
  • Du code ou les tests sont possibles sans acrobaties

Robert C. Martin le résumé bien : "Clean code is code that has been taken care of." C'est du code dont quelqu'un s'est occupe. Pas du code parfait. Du code soigne.

Pragmatisme avant dogmatisme

Je vais etre direct : cette serie ne sera pas un catechisme. Je ne vais pas te dire "toute fonction doit faire moins de 5 lignes" ou "il ne faut jamais utiliser de commentaires". Ce genre de regle absolue, c'est confortable mais c'est faux.

Le contexte compte. Un script de migration jetable n'a pas besoin du meme niveau de soin qu'une librairie open-source. Un prototype pour valider une idee n'a pas besoin d'une architecture hexagonale. Si tu veux approfondir les questions d'architecture, j'ai écrit une serie dédiée sur paltemps.fr.

Ce qui compte, c'est de savoir faire la différence entre "ce code est temporaire" et "ce code va vivre 5 ans". Et d'ajuster son effort en consequence.

Ce que cette serie couvre

Voici les 23 articles de la serie, regroupes par theme :

Les fondamentaux (00-07)

# Sujet
00 Introduction (cet article)
01 Nommage
02 Fonctions
03 Conditions et lisibilité
04 Commentaires et documentation
05 Immutabilite et effets de bord
06 Gestion des erreurs
07 Programmation defensive vs offensive

Les principes (08-12)

# Sujet
08 SOLID en pratique
09 DRY, KISS, YAGNI
10 Separation des responsabilités
11 Composition vs héritage
12 Loi de Demeter

Le refactoring (13-18)

# Sujet
13 Quand refactoriser
14 Techniques de refactoring
15 Refactoring avec des tests
16 Code smells
17 Legacy code
18 Refactoring continu

En pratique (19-22)

# Sujet
19 Code review
20 Linting et formatage
21 Clean code en équipe
22 Glossaire et références

Pour qui ?

Cette serie est pour les devs qui ecrivent du TypeScript ou du JavaScript au quotidien. Les exemples sont en TypeScript, mais les principes s'appliquent a n'importe quel langage. Si tu debutes, tu vas apprendre les bonnes habitudes tot (c'est un avantage énorme). Si tu as de l'experience, tu vas mettre des mots sur des intuitions que tu as deja.

Tu n'as pas besoin de lire les articles dans l'ordre, mais les 8 premiers forment une base solide. Je te recommande de commencer par la.

Résumé

  • Le code sale coûte des milliards chaque annee en productivité perdue
  • "On corrigera plus tard" ne marche jamais en pratique
  • Le clean code, c'est du code soigne, pas du code parfait
  • Le pragmatisme bat le dogmatisme : adapte ton effort au contexte
  • Cette serie couvre 23 articles, des fondamentaux au refactoring en équipe

Article suivant : 01 - Nommage

Sources

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.