4.11 Exercie: Paysage ou Portrait
Voici un nouvel exercice : écrivez une fonction paysage(largeur, hauteur) qui retourne true si l'image est au format paysage (largeur strictement supérieure à hauteur), et false sinon. Mettez la vidéo en pause pour faire l'exercice, puis revenez pour la correction.
Comme dans l'exercice précédent, on pourrait commencer par un simple if / else, ou utiliser l'opérateur ternaire pour retourner true ou false. Mais en réalité, il existe une troisième solution, beaucoup plus propre : retourner directement le résultat de la comparaison.
L'astuce : retourner l'expression elle-même
Une expression de comparaison comme largeur > hauteur produit déjà un booléen. Il n'y a aucun besoin de la convertir explicitement en true ou false via un if. Écrire if (x > y) return true; else return false; est considéré comme un anti-pattern. La bonne pratique est :
function paysage(largeur, hauteur) {
return largeur > hauteur;
}
console.log(paysage(800, 600)); // true (paysage)
console.log(paysage(300, 600)); // false (portrait)
Avec 800 × 600, la largeur dépasse la hauteur : true. Avec 300 × 600, on a une image verticale : false. La fonction est tellement courte qu'elle se lit comme sa propre documentation. Retenez ce réflexe : si vous vous apprêtez à écrire return true ou return false directement après un if, vous pouvez probablement retourner directement la condition elle-même. On se retrouve dans la prochaine vidéo.
En résumé
Cet exercice vous enseigne à implémenter une fonction JavaScript nommée « paysage » qui détermine si une image est au format paysage (largeur > hauteur) ou portrait. À travers plusieurs approches (if/else, opérateur ternaire, puis retour direct de l'expression booléenne), vous apprendrez à écrire du code plus propre et optimisé en JavaScript.
Points clés
- Une fonction paysage() accepte deux paramètres : largeur et hauteur, et retourne un booléen
- L'opérateur de comparaison (>) permet de tester si la largeur dépasse la hauteur
- Plutôt que de retourner explicitement true/false, retourner directement l'expression booléenne rend le code plus élégant et lisible
- Une image est en format paysage lorsque sa largeur est supérieure à sa hauteur
- Les dimensions peuvent être testées en console.log() avec des exemples concrets (800×600 = paysage, 300×600 = portrait)
Questions fréquentes
Pourquoi est-ce une mauvaise pratique de retourner explicitement true ou false ?
Retourner true/false explicitement est redondant. Comme l'expression booléenne (largeur > hauteur) s'évalue déjà à true ou false, vous pouvez la retourner directement, ce qui rend le code plus concis et lisible sans changer son comportement.
Comment tester ma fonction paysage() ?
Appelez simplement la fonction avec console.log() en passant des dimensions : console.log(paysage(800, 600)) pour une image paysage doit afficher true, et console.log(paysage(300, 600)) pour une image portrait doit afficher false.
Quelle est la différence entre l'opérateur ternaire et le return direct de l'expression ?
L'opérateur ternaire (condition ? vrai : faux) est utile pour assigner des valeurs différentes, mais si vous retournez simplement true ou false selon la condition, retourner directement l'expression booléenne est plus simple et plus efficace.