Migliori pratiche per le istruzioni condizionali in JavaScript

Migliori pratiche per le istruzioni condizionali in JavaScript

Questo articolo spiega le migliori pratiche per le istruzioni condizionali in JavaScript.

YouTube Video

Migliori pratiche per le istruzioni condizionali in JavaScript

Le istruzioni if sono una struttura di controllo fondamentale nei programmi JavaScript. Tuttavia, con l'aumentare della complessità del codice, il numero di istruzioni if può crescere, rendendo il codice più difficile da leggere. Questa volta approfondiremo le migliori pratiche per progettare correttamente le istruzioni if in JavaScript al fine di migliorare la leggibilità e la manutenibilità.

Semplifica il codice utilizzando flag.

Semplifica condizioni che coinvolgono criteri multipli utilizzando valori booleani.

Esempi da Evitare

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

Esempi Migliorati

Usa i flag per chiarire le condizioni.

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

Mantieni semplici le istruzioni condizionali

Quando un'espressione condizionale diventa complessa, la leggibilità del codice diminuisce, quindi è necessario mantenere la condizione semplice.

Esempi da Evitare

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

Esempi Migliorati

Scomponendo la condizione in variabili con significati specifici, puoi chiarire il suo intento.

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

Chiarire la precedenza degli operatori logici

Nelle dichiarazioni if di JavaScript, una comprensione errata della precedenza degli operatori logici può portare a comportamenti non voluti.

Esempi da Evitare

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}

Esempi Migliorati

Quando la precedenza degli operatori non è chiara, puoi usare le parentesi in modo appropriato per chiarire.

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

Utilizzare la valutazione a circuito corto

JavaScript supporta la valutazione a corto circuito sia per l'operatore && (AND) che per l'operatore || (OR). La valutazione a corto circuito significa che quando il risultato di una condizione è determinato durante la valutazione, la parte rimanente non viene valutata.

  • AND (&&): Se la parte sinistra è valutata come falsa, la parte destra non viene valutata e il suo valore viene restituito.
  • OR (||): Se la parte sinistra è valutata come vera, la parte destra non viene valutata e il suo valore viene restituito.

Esempi da Evitare

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

Esempi Migliorati

In questo codice, la funzione user?.someComplexFunction() viene chiamata anche se user?.isLoggedIn è false.

Comprendere la valutazione a corto circuito può aiutarti a evitare calcoli non necessari e a scrivere codice efficiente.

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

Minimizza l'uso delle istruzioni else

Le istruzioni else possono aumentare il carico cognitivo durante il tracciamento del codice. Invece, considera di utilizzare i ritorni anticipati.

Esempi da Evitare

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

Esempi Migliorati

Chiarisci le condizioni con i ritorni anticipati.

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

Uso corretto dell'operatore ternario

Per condizioni semplici, l'utilizzo di un operatore ternario può accorciare il tuo codice. Tuttavia, evita nidificazioni o logiche complesse.

Esempi da Evitare

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

Esempi Migliorati

Dai priorità alla leggibilità separando le condizioni.

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}

Utilizzare valori predefiniti e valutazione a circuito corto

Usa valori di default e valutazioni con corto circuito per ridurre i rami e semplificare il codice.

Esempi da Evitare

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

Esempi Migliorati

In questo caso, l'uso degli operatori logici lo rende più conciso.

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

Distingui correttamente quando utilizzare le istruzioni switch.

Quando sono necessarie più condizioni, le istruzioni switch possono rendere più chiare le intenzioni.

Esempi da Evitare

 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}

Esempi Migliorati

L'uso delle istruzioni switch può aiutare a organizzare il codice.

 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}

Utilizzare clausole di guardia con condizioni di uscita anticipata

Una clausola di guardia è una tecnica che utilizza istruzioni if per uscire anticipatamente da una funzione.

Esempi da Evitare

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}

Esempi Migliorati

Usa clausole di guardia per ridurre la nidificazione.

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

Scrivi commenti per chiarire le intenzioni.

Per condizioni complesse o rami critici, aggiungi commenti brevi e chiari per trasmettere l'intento del codice.

Esempi da Evitare

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

Esempi Migliorati

Aggiungi commenti per rendere chiare le intenzioni.

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}

Conclusione

Un utilizzo efficace delle istruzioni if di JavaScript può migliorare notevolmente la leggibilità e la manutenibilità del codice.

Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.

YouTube Video