Ne pas se répéter (DRY) ou tout coder de zéro : Le dilemme du développeur

Tim
June 17th, 2024
image description

Dans le monde du développement de logiciel (site ou application Web inclus), deux philosophies s'affrontent souvent : le principe DRY (Don't Repeat Yourself) et la pratique de tout coder de zéro.

D'un côté, le principe DRY prône l'élimination des répétitions de code en faveur de l'abstraction et de la réutilisation. De l'autre du ring, certains développeurs préfèrent coder chaque fonctionnalité à partir de zéro, avec comme argument phare le contrôle total sur le code et une meilleure compréhension du fonctionnement du logiciel.

Alors, comme toujours, ce n'est ni tout blanc ni tout noir. En effet, savoir quelle est la meilleure approche dépend de plusieurs facteurs, tels que la complexité du projet, les compétences de l'équipe et les objectifs de développement.

Dans cet article, nous allons explorer comme à l'accoutumé les avantages et les inconvénients de chaque approche pour vous aider à faire un choix éclairé pour vos projets de développement.

1. Le principe DRY : Éliminer les répétitions pour un code plus propre et plus maintenable

Le principe DRY (Don't Repeat Yourself) vise à réduire, voire éliminer, les répétitions de code dans un projet. Cela se fait en extrayant les fonctionnalités communes dans des modules ou des bibliothèques réutilisables. C'est simple, si on commence à utiliser un bout de code à deux ou plusieurs endroits, c'est qu'il est temps de factoriser ça. Au lieu de copier-coller du code, les développeurs devraient le réutiliser à travers des fonctions, des modules ou des bibliothèques, ce qui favorise la modularité, la maintenance et la cohérence du code. En effet, selon ce principe, chaque morceau d'information ne doit être représenté qu'une seule fois dans un système.

Les avantages du principe DRY sont nombreux :

  • Économie de temps (et donc d'argent ?) : réutiliser du code existant permet de gagner du temps et de minimiser les efforts. Plutôt que de réécrire une fonctionnalité à partir de zéro, les développeurs peuvent simplement utiliser une fonction ou un composant existant, ce qui accélère le processus de développement et réduit le risque d'erreurs. C'est un peu comme faire faire ses devoirs par ses parents. Si le parent en question est fiable, alors on a tout à y gagner. Est-ce que c'est bien ? Chacun se fait sa propre opinion.

  • Code plus propre et plus lisible : un code sans répétitions est plus facile à comprendre et à modifier, ce qui facilite la maintenance et le débogage. En effet, quand deux morceaux de code similaires se retrouvent dispersés à différents endroits, cela peut entraîner des incohérences. Si l'un de ces morceaux est modifié, l'autre ne sera pas automatiquement mis à jour.

  • Moins de bugs : en réduisant les répétitions, vous réduisez également le risque d'erreurs et de bugs dans le code.

  • Code plus flexible et évolutif : un code DRY est plus flexible et peut-être facilement étendu et modifié pour répondre aux nouvelles exigences.

  • Meilleure collaboration : le code DRY facilite la collaboration entre les développeurs, car ils peuvent utiliser des modules et des bibliothèques existants au lieu de tout coder à partir de zéro. D'ailleurs, si ce concept vous séduit, vous pouvez découvrir GIT ici si ce n'est pas déjà fait.

1. Le principe DRY : Éliminer les répétitions pour un code plus propre et plus maintenable

Certains développeurs préfèrent coder chaque fonctionnalité à partir de zéro, arguant que cela leur donne un meilleur contrôle sur le code et une meilleure compréhension du fonctionnement du logiciel. Honnêtement, je suis plutôt d'accord. En général, je préfère utiliser Tailwind CSS plutôt qu'une bibliothèque prête à l'emploi comme Bootstrap. Cependant, il arrive que lorsque je suis confronté à des délais serrés, je choisisse de faire appel à Bootstrap et dans ces moments-là, je remercie le ciel que cette option soit disponible. Donc ça dépend.

Revenons à nos moutons, donc je disais que les avantages de coder de zéro incluent :

  • Une meilleure compréhension du code : en codant tout à partir de zéro, vous avez une meilleure compréhension de la structure et du fonctionnement du logiciel. C'est logique, sous réserve que vous n'ayez pas copié-collé du code sans réfléchir. En réussissant à tout coder vous-même, il est fort probable que vous maîtrisiez chaque aspect du code du projet. C'est indéniable. Donc j'aurai tendance à recommander aux débutants de tout coder par eux-mêmes.

  • Code plus personnalisé : le code codé à partir de zéro peut être mieux adapté aux besoins spécifiques du projet. Encore une fois, c'est logique : vous avez la liberté et le pouvoir de modifier le code pour répondre précisément aux exigences du projet. Vous pouvez même transformer un carré en rond ou vice versa, simplement parce que vous en avez la capacité.

  • Plus grande flexibilité pour les futures modifications : le code codé à partir de zéro peut être plus facile à modifier et à adapter aux futurs changements.

3. Choisir la bonne approche : DRY vs Coder de zéro

Le choix entre le principe DRY et le fait de tout coder à partir de zéro dépend de plusieurs facteurs :

  • Complexité du projet : pour les projets complexes, le principe DRY est généralement préférable, car il permet de réduire la complexité du code et d'améliorer sa maintenabilité. C'est pourquoi, on utilise les nombreux Framework et librairies web existants (Laravel, Vuejs, Bootstrap, Pandas, Konva etc).

  • Compétences de l'équipe : si l'équipe de développement n'a pas l'expérience nécessaire pour appliquer le principe DRY correctement, il peut être préférable de coder de zéro pour éviter de créer un code difficile à maintenir.

  • Objectifs de développement : Si l'objectif principal est de créer un code propre et maintenable, le principe DRY est un bon choix. Si l'objectif est de créer un code personnalisé et flexible, coder de zéro peut être une meilleure option.

  • Si votre objectif est de comprendre comment les choses fonctionnent sous le capot, il est préférable de partir de zéro. En écrivant chaque ligne de code, vous plongez profondément dans le fonctionnement interne du logiciel, ce qui vous offre une expérience d'apprentissage inestimable et une connaissance approfondie du système. Est-ce que le jeu en vaut la chandelle ? Pas toujours. Créer un système d'exploitation ou une plateforme comme Facebook dans toute sa globalité peut être une tâche dantesque, nécessitant des ressources considérables en termes de temps, d'efforts et de compétences.

En conclusion, il n'y a pas de réponse unique à la question de savoir s'il faut appliquer le principe DRY ou tout coder à partir de zéro. La meilleure approche dépend des circonstances spécifiques de chaque projet.

Il est important de bien évaluer les avantages et les inconvénients de chaque approche avant de prendre une décision. L'idéal est souvent de trouver un équilibre entre les deux, en utilisant le principe DRY pour les fonctionnalités communes et en codant de zéro pour les fonctionnalités spécifiques et personnalisées.

Et vous ? Êtes-vous plutôt adepte du principe DRY ou préférez-vous tout coder à partir de zéro ?