• 20 hours
  • Easy

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 6/14/24

Déboguez votre fonction

Qu'est-ce que le débogage ?

Déboguer (debug en anglais) signifie littéralement éliminer les bugs.

Mais c’est quoi, un bug ?

Même si le terme anglais désigne originellement les insectes dans leur globalité, ce n'est pas ce sens qui nous intéresse ici ! Les bugs sont des erreurs algorithmiques et de logique métier dans un programme.

Premier bug informatique
Premier bug informatique

C'est une jolie histoire, mais les bugs logiciels sont tout de même très agaçants, qu'ils aient été créés par vous ou par d'autres développeurs ! 😉

Les bugs ne sont pas des erreurs de compilation, qui ont le mérite d'être évidentes et que vous savez trouver, même si vous ne savez pas toujours comment les corriger.

Reprenons. Les bugs sont des erreurs algorithmiques ou de logique métier. Ils peuvent provoquer des plantages ou produire des résultats incorrects. Les résultats incorrects sont souvent plus dangereux que les plantages, car ils peuvent continuer à se produire en silence et sans effet immédiat. 😱

Il existe un certain nombre d'approches pour détecter et éliminer les bugs :

  • Les vérifications aléatoires

  • Les outils de débogage

Les vérifications aléatoires

Il s'agit d'une méthode éprouvée qui est efficace lorsque vous devez résoudre des problèmes simples. Et soyons honnêtes, vous l'utiliserez tout le temps pour des vérifications rapides, mais pas comme un outil visant à assurer la qualité du code. La façon la plus courante de mettre en œuvre cette méthode est d'utiliser la fonction  Console.WriteLine  .

À titre d'exemple, disons que vous développez une fonction qui convertit les kilogrammes en livres anglaises (la livre anglaise, dont le symbole est lb, vaut 453,592 37 grammes) et que vous l'utilisez ensuite dans la logique de votre application :

class PoidsMagique
{
    public static double KgToLb(double kg)
    {
        double k = 2.20462262185;
        double lb = kg / k;
        return lb;
    }
}

double poidsEnKg = 50.0;
double poidsEnLb = PoidsMagique.KgToLb(poidsEnKg);

À un moment donné, vous vous demanderez peut-être en utilisant le résultat de cette fonction s'il n'y a pas un problème. Vous voudrez donc vérifier la valeur renvoyée par cette fonction.

La façon la plus courante de procéder à une vérification rapide est d'utiliser la fonction  Console.WriteLine  . Affichons donc le résultat après avoir appelé la fonction :

class PoidsMagique
{
    public static double KgToLb(double kg)
    {
        double k = 2.20462262185;
        double lb = kg / k;
        return lb;
    }
}

double poidsEnKg = 50.0;
double poidsEnLb = PoidsMagique.KgToLb(poidsEnKg);
Console.WriteLine(poidsEnKg + " kg est égal à " + poidsEnLb + " lb"); // -> 50.0 kg est égal à 22.679618499987406 lb

Ce résultat paraît bizarre. 🤨

Bien. Vous voudrez ensuite peut-être analyser plus en détail le calcul et consigner les valeurs au sein de la fonction :

class PoidsMagique
{
    public static double KgToLb(double kg) {
        double lb = kg / 2.2;
        Console.WriteLine("La conversion de " + kg + " kg en livres donne " + lb + " lb") ;
        // -> En convertissant 50,0 kg en livres et en utilisant le coefficient de conversion 2,20462262185, on obtient 22,679618499987406 lb.
        return lb;
    }
}

double poidsEnKg = 50.0;
double poidsEnLb = PoidsMagique.KgToLb(poidsEnKg);
Console.WriteLine(poidsEnKg + " kg est égal à " + poidsEnLb + " lb");

Ici, vous pouvez exposer une valeur supplémentaire utilisée pour le calcul,  k  , juste pour vous assurer qu'elle contient la valeur correcte. La nouvelle sortie montre également un résultat suspect. Cela vous permet de conclure que vous devez rechercher une erreur dans la fonction de calcul. Bien sûr, elle utilise la division au lieu de la multiplication. Corrigeons cela !

class PoidsMagique
{
    public static double KgToLb(double kg)
    {
        double k = 2.20462262185;
        double lb = kg * k;
        Console.WriteLine("La conversion de " + kg + " kg en livres donne " + lb + " lb") ;
        // -> En convertissant 50,0 kg en livres et en utilisant le coefficient de conversion 2,20462262185, on obtient 110,23113109250001 lb.
        return lb;
    }
}

double poidsEnKg = 50.0;
double poidsEnLb = PoidsMagique.KgToLb(kg: poidsEnKg);
Console.WriteLine(poidsEnKg +" kg est égal à "+ poidsEnLb +" lb"); // -> 50.0 kg est égal à 110.23113109250001 lb

Voilà qui semble être le bon chiffre !

Vous pouvez constater que le fait d'afficher les valeurs des variables pendant les différentes étapes des instructions du programme vous aide à voir l'état de ces valeurs. Vous pouvez alors remonter à la source de l'erreur et la corriger.

Utilisez les outils de débogage

Les outils et processus de débogage dépendent du langage de programmation, de la plateforme et de l'environnement que vous utilisez. Toutefois, ces outils ont en commun de nombreux concepts.

Les outils de développement

Visual Studio est l'environnement de développement intégré (IDE) le plus utilisé pour C# et dispose d'une édition gratuite disponible sur Internet, Visual Studio Code.

Le processus de débogage consiste à parcourir une séquence d'instructions, ligne par ligne, en révélant l'état actuel des variables de sa portée. Il s'agit des variables déclarées dans le bloc de code que vous êtes en train d'inspecter (pendant le débogage). Par révéler, j'entends visualiser les valeurs de ces variables à ce moment-là. Comme vous pouvez l'imaginer, il s'agit d'un moyen plus complet de vérifier des problèmes complexes.

En résumé 

Voici les points que vous avez appris dans ce chapitre :

  • Les bugs sont des erreurs algorithmiques et de logique métier.

  • Le débogage est le processus de détection et d'élimination des bugs.

  • Les méthodes les plus courantes pour détecter les bugs sont :

    • les contrôles aléatoires, utiles pour une validation rapide ;

    • les outils de débogage, pour un processus plus ciblé et précis.

Example of certificate of achievement
Example of certificate of achievement