Le principe de programmation DRY

Image by Marion from Pixabay

Un autre des principes du Clean code est le principe DRY. Qui signifie Don’t Repeat Yourself ou en français: « Ne te répètes pas ».

La duplication de code ralentit la maintenance et favorise les erreurs.

Illustrons ce principe avec un exemple en Typescript :

function calculateRectangleArea(width: number, height: number): number {
    return width * height;
}

function calculateCircleArea(radius: number): number {
    return Math.PI * radius * radius;
}

function calculateTriangleArea(base: number, height: number): number {
    return 0.5 * base * height;
}

function printRectangleArea(width: number, height: number): void {
    const area = width * height;
    console.log(`Rectangle area is ${area}`);
}

function printCircleArea(radius: number): void {
    const area = Math.PI * radius * radius;
    console.log(`Circle area is ${area}`);
}

function printTriangleArea(base: number, height: number): void {
    const area = 0.5 * base * height;
    console.log(`Triangle area is ${area}`);
}

Nous avons 3 fonctions pour calculer des aires et 3 fonctions pour afficher les aires de 3 formes différentes. Nous pouvons donc :

  • centraliser le calcul de l’aire avec une seule méthode
  • centraliser la fonction d’affichage

Ce qui donne :

function calculateArea(shape: string, ...dimensions: number[]): number {
    switch (shape) {
        case "rectangle":
            return dimensions[0] * dimensions[1];
        case "circle":
            return Math.PI * dimensions[0] * dimensions[0];
        case "triangle":
            return 0.5 * dimensions[0] * dimensions[1];
        default:
            throw new Error("Unknown shape");
    }
}

function printArea(shape: string, ...dimensions: number[]): void {
    const area = calculateArea(shape, ...dimensions);
    console.log(`${shape} area is ${area}`);
}

Et voilà, en centralisant, nous évitons la répétition des calculs pour chaque forme. La logique de code est donc réunie.

La réutilisation et la maintenance sont simplifiés. Le code est aussi plus facile à étendre, par exemple pour ajouter une nouvelle forme.

C’est tout pour aujourd’hui !

Kevin
Développeur fullstack depuis 16 ans, j'aime résoudre des problèmes complexes et me lancer dans des projets stimulants. J'ai développé de nombreux produits : progiciels, site e-commerce, web services, API ou encore plateforme Saas. J'aime l'accessibilité, le clean code, l'automatisation et améliorer l'Expérience Utilisateur.