Les principes du clean code

Le code informatique tend à se complexifier, ce qui rend essentiel la création d’un code propre, ou "Clean Code", pour assurer la pérennité des systèmes et faciliter le travail en équipe sur un code source. Mais qu’est-ce qu’on entend vraiment par clean code ? C’est ce que nous allons voir dans cet article !
Nathan.jpg
Nathan MITTELETTE, M. propre du codeMis à jour le 9 Juil 2024
Les principes du clean code

Le clean code, c'est quoi ?

La notion de clean code ou de « code propre » est loin d'être une notion qui coule de source ! Voici la définition qui parait la plus juste à nos yeux (écrite par les créateurs du logiciel Sonar) :

"The foundation of the Clean Code taxonomy is code that is clean and code that has the following properties: consistent, intentional, adaptable, and responsible."

Sur cette base, on part donc du postulat que le code doit avoir différentes propriétés : consistent, intentional, adaptable et responsible. Concrètement, à quoi correspondent-elles ?

Qu'est-ce qu'un code "consistent" ?

La cohérence du code fait référence à son formalisme. L'objectif principal de cette propriété est de retrouver une unique façon de coder et de présenter le code. Ce formalisme peut bien évidemment dépendre des spécificités des projets de développement et avoir des variations, cependant, il est grandement recommandé de se baser sur un référentiel connu. Il en existe généralement un par langage, et concrètement, cela passe principalement par l'utilisation de linters sur vos projets.

La cohérence du code permet aux différents développeurs de lire et de comprendre plus rapidement les différents morceaux de code. Cela permet notamment de faciliter l'intégration de nouveaux développeurs sur vos projets et d'améliorer leur capacité à coder rapidement, une fois le formalisme acquis.

Développer un code "intentional"

Dans le cadre de notre définition, un code "intentionnel" signifie un code lisible et le plus compréhensible possible. À travers cette propriété, il est important de prendre conscience d'une chose : un code écrit par un développeur a de grandes chances d'être un jour lu et utilisé par d'autres développeurs.

Aussi, pour faciliter ce travail collectif, on peut passer par plusieurs actions comme par exemple : travailler à un bon nommage des variables et des fonctions, utiliser des qualifiers (public, private et protected), spécifier si les attributs sont final ou non, ou encore, découper les différentes sections du code en fonctions.

Pour monter encore un cran au-dessus dans la compréhension et la lisibilité de son code, on peut utiliser des commentaires. On distingue trois grandes utilisations des commentaires :

  • La description du fonctionnement du code, le « quoi » : cela permet d'expliquer comment ce dernier fonctionne. C'est dans cette catégorie que se retrouve le célèbre "Get Name" sur le Getter de l'attribut name.
  • L'explication de la manière dont on peut utiliser le code, le « comment » : cela permet de laisser un petit message pour les développeurs avec des indications sur la façon dont le code doit être utilisé dans le projet.
  • La justification de l'existence d'un morceau de code, le « pourquoi » : cela permet de démontrer la réflexion qui a été faite lors de la rédaction du code et ainsi, de justifier les choix de développement à travers un commentaire. Moins utilisé, ce dernier type de commentaire permet pourtant d'améliorer nettement la compréhension du code lors de sa lecture et plus largement, le contexte de sa création.

Un code adaptable, c'est quoi ?

Lorsque l'on parle de code « adaptable », on parle d'un code qui permet de répondre à différentes problématiques. L'objectif n'est plus seulement de penser son code pour sa problématique, mais de le penser plus largement, pour qu'il puisse facilement  être réutilisé par les autres développeurs.

Cela implique que l'on devienne plus responsable de son code ! Lorsque l'on écrit une méthode, il ne faut pas prendre les choses pour acquises ; la méthode doit être auto-suffisante, et ne pas juste fonctionner dans certains cas. Il est important de faire quelques vérifications au début de la méthode pour s'assurer de la cohérence des paramètres avant d'effectuer son action. Lorsque l'on parle de responsabilité de son code, les tests sont inévitables ! Comme on devient plus responsable de sa méthode, il est important de bien la tester pour éviter toute régression associée à cette méthode.

Créer un code "Responsible"

Cette dernière notion du Clean Code a pour objectif de responsabiliser le développeur sur son code, ainsi que son utilisation. Derrière cette notion de « code responsable », on retrouve principalement des obligations « éthiques » en lien avec les données comme la gestion de leur stockage (principalement pour les données sensibles : données personnelles et mots de passe). On retrouve également un aspect qui est rarement au centre des discussions des développeurs : le respect des licences des différents codes que l'on peut retrouver sur Internet. Il est important d'utiliser uniquement des codes libres de droits dans son projet et de respecter les conditions des différents types de licences.

Le nommage est également un point important, que ce soit dans l'UIL'UI signifie "user interface", et se compose de tous les éléments graphique d'une interface utilisateur. ou dans les variables du code. Les noms utilisés ne doivent en aucun cas discriminer ou manquer de respect à quiconque.

Pour résumer, le Clean Code a pour objectif de rendre le code plus lisible et collaboratif. L'objectif du code n'est plus uniquement de répondre à une problématique métier, mais également d'être le plus générique possible et compréhensible pour d'autres développeurs. Si on extrapole, on pourrait même dire que l'objectif est de rendre « l'expérience développeur » la plus agréable possible.

Comment faire du clean code ?

Maintenant que la notion de CleanCode est plus claire pour vous, passons à l'application ! Vous retrouvez dans cet article quelques outils pouvant vous permettre d'améliorer la qualité de votre code.

Par ailleurs, avant de mettre en place des outils, nous vous conseillons de définir quelles sont vos règles de qualité minimales que vous voulez vous imposer sur votre code, ou plus largement sur vos projets. Pour cela, on vous conseille de vous pencher sur la définition de vos propres quality gates.