Meilleures pratiques pour les instructions conditionnelles en JavaScript

Meilleures pratiques pour les instructions conditionnelles en JavaScript

Cet article explique les meilleures pratiques pour les instructions conditionnelles en JavaScript.

YouTube Video

Meilleures pratiques pour les instructions conditionnelles en JavaScript

Les instructions if sont une structure de contrôle fondamentale dans les programmes JavaScript. Cependant, à mesure que le code devient plus complexe, le nombre d'instructions if peut augmenter, rendant le code plus difficile à lire. Cette fois, nous examinerons les meilleures pratiques pour concevoir correctement les instructions if en JavaScript afin d'améliorer leur lisibilité et leur maintenabilité.

Simplifiez le code en utilisant des drapeaux.

Simplifiez les conditions impliquant plusieurs critères en utilisant des valeurs booléennes.

Exemples à éviter

1// Bad Example
2if (isUserLoggedIn && user.hasPaymentInfo && user.cartItems.length > 0) {
3    console.log('Proceed to checkout');
4}

Exemples améliorés

Utilisez des drapeaux pour clarifier les conditions.

1// Good Example
2const canProceedToCheckout = isUserLoggedIn && user.hasPaymentInfo && user.cartItems.length > 0;
3
4if (canProceedToCheckout) {
5    console.log('Proceed to checkout');
6}

Simplifiez les instructions conditionnelles

Lorsqu'une expression conditionnelle devient complexe, la lisibilité du code diminue, il est donc nécessaire de maintenir la condition simple.

Exemples à éviter

1// Bad example
2if (user && user.isLoggedIn &&
3    user.permissions && user.permissions.includes('admin')) {
4    console.log('Welcome, admin!');
5}

Exemples améliorés

En décomposant la condition en variables aux significations spécifiques, vous pouvez clarifier son intention.

1// Good Example
2const isUserLoggedIn = user?.isLoggedIn;
3const hasAdminPermission = user?.permissions?.includes('admin');
4
5if (isUserLoggedIn && hasAdminPermission) {
6    console.log('Welcome, admin!');
7}

Clarifier la priorité des opérateurs logiques

Dans les instructions if en JavaScript, une mauvaise compréhension de la priorité des opérateurs logiques peut entraîner un comportement inattendu.

Exemples à éviter

1// Bad example
2if (isAdmin && isActive || isPremium) {
3    // The precedence of `&&` is higher than `||`,
4    // so this expression is interpreted as
5    // ((isAdmin && isActive) || isPremium)
6    console.log("Access granted");
7} else {
8    console.log("Access denied");
9}

Exemples améliorés

Lorsque la priorité des opérateurs n'est pas claire, vous pouvez utiliser des parenthèses de manière appropriée pour clarifier.

1// Good Example
2if (isAdmin && (isActive || isPremium)) {
3    console.log("Access granted");
4} else {
5    console.log("Access denied");
6}

Utiliser l'évaluation par court-circuit

JavaScript prend en charge l'évaluation à court-circuit pour les opérateurs && (ET) et || (OU). L'évaluation à court-circuit signifie que lorsque le résultat d'une condition est déterminé pendant l'évaluation, la partie restante n'est pas évaluée.

  • ET (&&) : Si le côté gauche est évalué comme faux, le côté droit n'est pas évalué et sa valeur est retournée.
  • OU (||) : Si le côté gauche est évalué comme vrai, le côté droit n'est pas évalué et sa valeur est retournée.

Exemples à éviter

1// Bad Example
2if (user?.someComplexFunction() && user?.isLoggedIn) {
3    // ...
4}

Exemples améliorés

Dans ce code, la fonction user?.someComplexFunction() est appelée même si user?.isLoggedIn est false.

Comprendre l'évaluation à court-circuit peut vous aider à éviter les calculs inutiles et à écrire un code efficace.

1// Good Example
2if (user?.isLoggedIn && user?.someComplexFunction()) {
3    // ...
4}

Minimisez l'utilisation des instructions else

Les instructions else peuvent augmenter la charge cognitive lors du suivi du code. Envisagez plutôt d'utiliser des retours précoces.

Exemples à éviter

1// Bad Example
2function getUserRole(user) {
3    if (!user) {
4        return 'Guest';
5    } else {
6        return user.role;
7    }
8}

Exemples améliorés

Clarifiez les conditions avec des retours précoces.

1// Good Example
2function getUserRole(user) {
3    if (!user) return 'Guest';
4    return user.role;
5}

Utilisation correcte de l'opérateur ternaire

Pour des conditions simples, l'utilisation d'un opérateur ternaire peut raccourcir votre code. Cependant, évitez l'imbrication ou une logique complexe.

Exemples à éviter

1// Bad Example
2let message = user.isLoggedIn ? user.isAdmin ?
3                    'Welcome, admin!'
4                    : 'Welcome, user!'
5                    : 'Please log in.';

Exemples améliorés

Privilégiez la lisibilité en divisant les conditions.

1// Good Example
2if (!user.isLoggedIn) {
3    message = 'Please log in.';
4} else if (user.isAdmin) {
5    message = 'Welcome, admin!';
6} else {
7    message = 'Welcome, user!';
8}

Utiliser des valeurs par défaut et l'évaluation par court-circuit

Utilisez des valeurs par défaut et l'évaluation à court-circuit pour réduire les embranchements et simplifier le code.

Exemples à éviter

1// Bad Example
2let displayName;
3if (user && user.name) {
4    displayName = user.name;
5} else {
6    displayName = 'Guest';
7}

Exemples améliorés

Dans ce cas, l'utilisation d'opérateurs logiques rend cela plus concis.

1// Good Example
2displayName = user?.name || 'Guest';

Différenciez correctement les situations où utiliser les instructions switch.

Lorsqu'il y a plusieurs conditions, les instructions switch peuvent clarifier les intentions.

Exemples à éviter

 1// Bad Example
 2if (status === 'success') {
 3    console.log('Operation was successful.');
 4} else if (status === 'error') {
 5    console.error('There was an error.');
 6} else if (status === 'pending') {
 7    console.log('Operation is still pending.');
 8} else {
 9    console.log('Unknown status.');
10}

Exemples améliorés

L'utilisation des instructions switch peut aider à organiser le code.

 1// Good Example
 2switch (status) {
 3    case 'success':
 4        console.log('Operation was successful.');
 5        break;
 6    case 'error':
 7        console.error('There was an error.');
 8        break;
 9    case 'pending':
10        console.log('Operation is still pending.');
11        break;
12    default:
13        console.log('Unknown status.');
14}

Utiliser des clauses de garde avec des conditions de sortie anticipée

Une clause de garde est une technique qui utilise des instructions if pour quitter une fonction de manière anticipée.

Exemples à éviter

1// Bad Example
2function processOrder(order) {
3    if (order && order.isValid) {
4        if (order.items && order.items.length > 0) {
5            // Continue processing
6        }
7    }
8}

Exemples améliorés

Utilisez des clauses de garde pour réduire l'imbrication.

1// Good Example
2function processOrder(order) {
3    if (!order?.isValid) return;
4    if (!order.items?.length) return;
5
6    // Continue processing
7}

Rédigez des commentaires pour clarifier les intentions.

Pour des conditions complexes ou des branches critiques, ajoutez des commentaires concis et clairs pour exprimer l'intention du code.

Exemples à éviter

1// Bad Example
2if (stock > 10 && !isRestricted) {
3    console.log('Available for purchase.');
4}

Exemples améliorés

Ajoutez des commentaires pour rendre les intentions claires.

1// Good Example
2// The product must have at least 10 items in stock
3// and not be on the restricted list.
4if (stock > 10 && !isRestricted) {
5    console.log('Available for purchase.');
6}

Conclusion

Utiliser efficacement les instructions if en JavaScript peut grandement améliorer la lisibilité et la maintenabilité du code.

Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.

YouTube Video