Cours JavaScript et TypeScript · Module 1: Bases de JavaScript

Commentaires et formatage du code

9 min de lecture
Dans cette leçon7

À Jurassic Park, une bonne documentation et une gestion rigoureuse de l'information sont essentielles pour la sécurité - tant pour les employés que pour les visiteurs. Une description imprécise du comportement d'un dinosaure ou des notes illisibles concernant une procédure de sécurité peuvent entraîner des conséquences catastrophiques.

De même, dans le monde de JavaScript, les commentaires et un formatage correct du code sont des pratiques fondamentales qui garantissent que ton code sera compréhensible, facile à maintenir et sûr.

Les commentaires en JavaScript

Les commentaires sont des fragments de texte dans le code qui sont ignorés par l'interpréteur JavaScript. Ils servent uniquement aux programmeurs à documenter le code, à expliquer son comportement ou à désactiver temporairement des fragments de code pendant les tests.

Commentaires sur une seule ligne

Un commentaire sur une seule ligne commence par deux barres obliques (//). Tout ce qui se trouve à droite de ces caractères sur une ligne donnée est traité comme un commentaire.

1// Ceci est un commentaire sur une seule ligne
2let velociraptorCount = 3; // Nombre de Velociraptors dans l'enclos B

Commentaires multi-lignes

Les commentaires multi-lignes (de bloc) commencent par /* et se terminent par */. Tout ce qui se trouve entre ces marqueurs est traité comme un commentaire, même si cela s'étend sur plusieurs lignes.

1/*
2   Ceci est un commentaire multi-lignes.
3   Il peut s'étendre sur plusieurs lignes.
4   Protocole de sécurité pour l'enclos du T-Rex :
5   1. Vérifier l'alimentation de la clôture
6   2. S'assurer que toutes les grilles sont fermées
7   3. Surveiller l'activité toutes les 15 minutes
8*/
9
10let safetyChecklist = ["power", "gates", "monitoring"];

Usages pratiques des commentaires

Les commentaires en JavaScript servent à divers objectifs, semblables aux différents types de documentation de Jurassic Park :

1. Documentation du code

1/**
2 * Calcule la distance de sécurité par rapport à un enclos de dinosaures.
3 * @param {string} dinoType - L'espèce de dinosaure
4 * @param {number} dinoCount - Nombre de dinosaures dans l'enclos
5 * @param {boolean} isElectricFenceActive - Si la clôture électrique est active
6 * @returns {number} Distance de sécurité en mètres
7 */
8function calculateSafeDistance(dinoType, dinoCount, isElectricFenceActive) {
9    // Implémentation de la fonction...
10    return distance;
11}

Cette forme de commentaires (JSDoc) est particulièrement utile, car de nombreux éditeurs de code (comme VS Code) l'utilisent pour afficher la documentation pendant l'écriture du code.

2. Expliquer une logique complexe

1// Algorithme de prédiction du schéma d'évasion des Velociraptors
2// Basé sur l'analyse de 10 tentatives d'évasion précédentes
3// et utilise le schéma comportemental décrit par le Dr Grant
4if ((attemptTime > sunsetTime && attemptTime < sunriseTime) &&
5    (weatherCondition === 'storm' || fencePowerLevel < 80)) {
6    // Risque d'évasion accru - active des mesures de sécurité supplémentaires
7    activateSecondaryContainment();
8}

3. Désactiver temporairement du code (mise en commentaire)

1// Ancienne méthode de nourrissage - actuellement inutilisée
2// function feedDinosaurs(dinoType) {
3//     if (dinoType === 'herbivore') {
4//         providePlants();
5//     } else {
6//         provideMeat();
7//     }
8// }
9
10// Nouvelle méthode de nourrissage tenant compte des régimes spéciaux
11function feedDinosaurs(dinoType, specialDiet) {
12    // Implémentation tenant compte des régimes spéciaux
13}

4. Marqueurs TODO/FIXME/NOTE

1// TODO: Ajouter la prise en charge d'une nouvelle espèce dans le planning de nourrissage
2// FIXME: Corriger le bug dans le comptage des dinosaures pendant la pluie
3// NOTE: L'API du parc pourrait changer le mois prochain

De tels marqueurs sont souvent mis en évidence par les éditeurs de code et peuvent être facilement retrouvés lors du travail sur le code.

Bonnes pratiques pour les commentaires

Tout comme à Jurassic Park, où des informations obsolètes ou trompeuses peuvent être dangereuses, dans le code, de mauvaises pratiques de commentaire peuvent entraîner des problèmes :

Ce qu'il faut faire :

  1. Écris des commentaires qui expliquent le « pourquoi », pas le « quoi »

    1// MAUVAIS :
    2// Augmente le compteur de dinosaures de 1
    3dinoCount++;
    4
    5// BON :
    6// Tenir compte du spécimen fraîchement éclos du laboratoire
    7dinoCount++;
  2. Maintiens les commentaires à jour Lorsque tu modifies du code, mets aussi à jour les commentaires. Des commentaires obsolètes sont pires que pas de commentaires du tout.

  3. Utilise un langage clair et précis Tout comme dans les protocoles de sécurité, la clarté est essentielle.

Ce qu'il faut éviter :

  1. Sur-commenter

    1// MAUVAIS :
    2// Déclaration d'une variable avec le nombre de dinosaures
    3let dinoCount = 15;
    4
    5// BON : (aucun commentaire nécessaire, le code se documente lui-même)
    6let dinoCount = 15;
  2. Des commentaires qui obscurcissent le code

    1/* Attention ! Ce code est compliqué et seul un senior peut le comprendre.
    2   Modifie à tes risques et périls ! */
  3. Des commentaires obsolètes

    1// MAUVAIS :
    2// Vérifie s'il y a 7 dinosaures
    3if (dinoCount > 10) { // Le code a changé, mais le commentaire est resté obsolète

Formatage du code

Tout comme des cartes et des plans précis de Jurassic Park sont essentiels à une gestion efficace, un formatage correct du code JavaScript est crucial pour la lisibilité et la maintenance.

Indentation et espacement

L'utilisation cohérente de l'indentation (généralement 2 ou 4 espaces) aide à distinguer visuellement les blocs de code :

1function checkParkSecurity() {
2    if (fencesActive) {
3        // Indentation de niveau 1
4        for (let sector of parkSectors) {
5            // Indentation de niveau 2
6            if (sector.hasCarnivores) {
7                // Indentation de niveau 3
8                runExtraChecks(sector);
9            }
10        }
11    } else {
12        // Indentation de niveau 1
13        activateEmergencyProtocol();
14    }
15}

Accolades

Il existe deux styles principaux pour placer les accolades :

Style K&R (Kernighan & Ritchie)

1function checkFences() {
2    if (powerLevel < 50) {
3        sendAlert();
4        activateBackupGenerator();
5    } else {
6        logStatus("Clôtures fonctionnant correctement");
7    }
8}

Style Allman

1function checkFences()
2{
3    if (powerLevel < 50)
4    {
5        sendAlert();
6        activateBackupGenerator();
7    }
8    else
9    {
10        logStatus("Clôtures fonctionnant correctement");
11    }
12}

En JavaScript, le style K&R est plus répandu.

Conventions de nommage

Tout comme pour le nommage précis des dinosaures, en JavaScript tu dois suivre des conventions de nommage claires :

1// camelCase pour les variables et les fonctions
2let velociraptorCount = 3;
3function checkSecuritySystems() { }
4
5// PascalCase pour les classes et les constructeurs
6class DinosaurPaddock { }
7
8// UPPER_CASE pour les constantes
9const MAX_VISITORS_PER_TOUR = 8;
10const PARK_OPENING_HOURS = {
11    start: 8,
12    end: 20
13};

Espaces autour des opérateurs

Pour une meilleure lisibilité, il vaut la peine d'utiliser des espaces autour des opérateurs :

1// Difficile à lire
2let safetyRating=parkSectors.length>0?parkSectors.filter(s=>s.securityLevel<3).length/parkSectors.length*100:0;
3
4// Plus facile à lire
5let safetyRating = parkSectors.length > 0
6    ? parkSectors.filter(s => s.securityLevel < 3).length / parkSectors.length * 100
7    : 0;

Longueur des lignes

Conserver une longueur de ligne raisonnable (généralement 80-120 caractères) facilite la lecture du code sans avoir besoin de défilement horizontal :

1// Ligne trop longue
2const fullSecurityCheck = checkElectricFences() && checkMotionSensors() && checkCameraSystem() && checkRadioSystem() && staffMembersPresent >= minimumStaffRequired && weatherCondition !== 'storm';
3
4// Découpée en parties plus faciles à lire
5const fullSecurityCheck =
6    checkElectricFences() &&
7    checkMotionSensors() &&
8    checkCameraSystem() &&
9    checkRadioSystem() &&
10    staffMembersPresent >= minimumStaffRequired &&
11    weatherCondition !== 'storm';

Regrouper le code lié

Organiser le code en groupes logiques améliore sa lisibilité :

1// Initialisation des variables
2const parkName = "Jurassic Park";
3const openingYear = 1993;
4const isOpen = true;
5
6// Vérification de l'état des enclos
7const fenceStatus = checkFences();
8const dinoHealth = monitorDinoVitals();
9const securityBreach = checkForBreaches();
10
11// Rapport
12generateStatusReport(fenceStatus, dinoHealth);
13if (securityBreach) {
14    alertSecurityTeam();
15}

Outils de formatage du code

Dans le développement JavaScript moderne, il existe de nombreux outils qui automatisent le formatage du code, semblables aux systèmes de surveillance avancés de Jurassic Park qui automatisent de nombreuses tâches de sécurité :

  • Prettier - formate automatiquement le code selon des règles établies
  • ESLint - vérifie le code à la recherche d'erreurs et de pratiques non standard
  • EditorConfig - aide à maintenir un formatage cohérent entre différents éditeurs et développeurs

Standards et styles de codage

Tout comme Jurassic Park a ses procédures et protocoles, dans le monde de JavaScript il existe divers standards de style de code reconnus :

  • Airbnb JavaScript Style Guide - l'un des ensembles de règles les plus populaires
  • Google JavaScript Style Guide - utilisé dans les projets Google
  • StandardJS - un style minimaliste sans configuration

Exercice pratique

Regarde le code non formaté suivant et réfléchis à la façon dont tu pourrais l'améliorer en appliquant les principes que tu as appris :

1// code non formaté
2function trackDino(dinoId,name,   species,location){
3// vérifie la position du dinosaure
4let status='unknown';
5if(location){status='tracked'}else{
6    // dinosaure introuvable
7    status='lost';
8    triggerAlert(dinoId)
9}
10// enregistre les données dans le système
11return{id:dinoId,name:name,species,
12    status:status,lastSeen:location?new Date():null}}
13// appel de la fonction
14const result=trackDino(42,'Blue','Velociraptor',{x:234,y:189});

Maintenant, compare-le avec la version correctement formatée :

1/**
2 * Suit la localisation d'un dinosaure et met à jour son statut dans le système
3 * @param {number} dinoId - Identifiant du dinosaure
4 * @param {string} name - Nom du dinosaure
5 * @param {string} species - Espèce du dinosaure
6 * @param {Object|null} location - Coordonnées de localisation ou null si introuvable
7 * @returns {Object} Données du dinosaure mises à jour
8 */
9function trackDino(dinoId, name, species, location) {
10    // Vérifie la position du dinosaure
11    let status = 'unknown';
12
13    if (location) {
14        status = 'tracked';
15    } else {
16        // Dinosaure introuvable - active la procédure d'alarme
17        status = 'lost';
18        triggerAlert(dinoId);
19    }
20
21    // Enregistre les données dans le système de surveillance
22    return {
23        id: dinoId,
24        name: name,
25        species,
26        status: status,
27        lastSeen: location ? new Date() : null
28    };
29}
30
31// Suivi du dinosaure « Blue »
32const result = trackDino(42, 'Blue', 'Velociraptor', { x: 234, y: 189 });

Résumé

Les commentaires et le formatage du code en JavaScript, à l'image de la documentation et des procédures de Jurassic Park, sont essentiels pour maintenir l'ordre, la sécurité et l'efficacité. Un code bien commenté et bien formaté :

  1. Est plus facile à comprendre par toi et les autres développeurs
  2. Réduit le risque d'erreurs et d'« évasions » (bugs)
  3. Facilite la maintenance et le développement du projet à l'avenir
  4. Améliore la collaboration en équipe

Souviens-toi, tout comme à Jurassic Park, où la négligence peut mener à la catastrophe (souviens-toi de ce qui s'est passé quand Dennis Nedry a désactivé les systèmes de sécurité ?), des pratiques négligées dans le code peuvent entraîner des bugs difficiles à détecter et des problèmes de maintenance.

Dans les prochaines leçons, nous appliquerons systématiquement ces bonnes pratiques, en construisant des éléments de plus en plus avancés de notre Jurassic Park virtuel à l'aide de JavaScript.

Code de cette leçon : index.js
1// Registre des dinosaures - Création d'objets
2// Exercice : Créer et modifier des objets JavaScript
3
4// Un objet est une collection de propriétés (clé : valeur)
5const trex = {
6  name: "Tyrannosaurus Rex",
7  period: "Late Cretaceous",
8  diet: "carnivore",
9  weight: 7000,
10  isDangerous: true
11};
12
13console.log("=== Profil du T-Rex ===");
14console.log("Nom:", trex.name);
15console.log("Régime:", trex["diet"]);
16console.log("Poids:", trex.weight, "kg");
17
18// Ajout d'une nouvelle propriété
19trex.enclosure = "Secteur A";
20console.log("Enclos:", trex.enclosure);
21
22// Ta mission :
23// 1. Crée un objet raptor avec les propriétés : name, speed, packSize, isAlpha
24// 2. Affiche ses propriétés
25// 3. Ajoute une nouvelle propriété
26
27// Ton code ici :
28

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. Comment commence un commentaire sur une seule ligne en JavaScript ?

  2. 2. Quelle convention de nommage est le standard pour les variables et les fonctions en JavaScript ?

Tâches pratiques dans le jeu

  • Clique dans l'ordre

    Classe les éléments d'un commentaire multi-lignes en JavaScript :

Articles utiles