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 ?
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.
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 :
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.
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.
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.
La notion de Quality Gate est incontournable lorsqu'il s'agit de garantir la qualité d'un code source. Ces outils permettent de définir des critères précis pour évaluer et maintenir un haut niveau de qualité. Mais qu'est-ce qu'un Quality Gate exactement, et comment le mettre en place efficacement ? Dans cet article, on vous explique tout ce qu'il y a à savoir concernant les Quality Gates et leurs mises en œuvre. Bonne lecture !
A l'heure où l'IA, avec un soutien marketing considérable, nous promet du code écrit dans les règles de l'art par des robots infaillibles, formés sur l'ensemble du code produit par l'humanité, plusieurs questions se posent :
Pour améliorer la qualité du code Java de nos applications, nous avons créé notre outil agent Java. On vous en parle en détails dans cet article.