L'efficienza non è di solito una preoccupazione reale per strutturare le if-statement, anche se sono complesse o annidate. Esistono modi per nidificare le if-statement che potrebbero essere meno efficienti di altre, ma se il codice viene eseguito una volta sola e impiega 5 nanosecondi per troppo tempo, non si sarà nemmeno in grado di notare che c'è una differenza.
È possibile che questo tipo di cose faccia davvero la differenza nel tempo di esecuzione di un programma, specialmente se si trova nel ciclo più interno di alcuni cicli annidati. Tuttavia, il modo migliore per gestire un programma lento è misurarlo e scoprire dove sta spendendo la maggior parte del suo tempo, in modo che tu possa rendere quel punto più efficiente - indipendentemente dal fatto che quel punto abbia o meno qualcosa a che fare con le if-statement annidate .
Quale dovrebbe essere la preoccupazione per le dichiarazioni if (specialmente quelle nidificate o complesse) è la leggibilità. È molto facile creare un miscuglio illeggibile di complesse istruzioni if annidate, e il codice più difficile da leggere, più difficile è assicurarsi che sia corretto o eseguirne il debug.
Per semplici dichiarazioni if, cerca di evitare che la condizione sia troppo pazza. Se non è possibile evitare una condizione complessa, provare a utilizzare la formattazione per chiarirla oppure utilizzare una funzione di supporto per valutare la condizione.
Mess:
if(a <= 5 && b > 10 && c < 4 && b <= 100
&& a > 2 && c > 1)
Migliore formattazione:
if( (a > 2) && (a <= 5) &&
(b > 10) && (b <= 100) &&
(c > 1) && (c < 4) )
Funzione di supporto:
if( withinLimits(a, b, c) )
Inoltre, cerca di evitare i doppi negativi. "Non direi che non è un'affermazione errata" è difficile da leggere. "È sbagliato" è facile da leggere e significa la stessa cosa. I singoli negativi non sono poi così male, ma a volte puoi rendere le cose un po 'più chiare affermando invece qualcosa di positivo.
Per le if if annidate, dipende da come sono nidificate.
Per qualcosa di simile:
if(a) {
if(b) {
if(c) {
something;
}
}
}
Potresti sostituirlo con qualcosa di simile:
if(a && b && c) {
something;
}
Se hai una nidificazione complessa di istruzioni if, probabilmente è un casino. Come risolverlo dipende esattamente da cosa è esattamente. Potrebbe essere possibile creare una tabella decisionale, una matrice con indici che rappresentano ciò su cui basiamo la decisione e le voci che costituiscono la decisione risultante. Se è così, possiamo semplicemente cercare la risposta senza usare alcuna dichiarazione if.