Tecnicamente no ma per il resto assolutamente Sì !!!
Dimentica "È la preferenza personale", "il codice funzionerà perfettamente", "ha funzionato bene per me", "è più leggibile" yada yada BS. Questo potrebbe facilmente portare a problemi molto seri se commetti un errore e credimi, è molto facile commettere un errore durante la codifica (Non credere ?, dai un'occhiata al famoso Apple andare a fallire bug ).
Argomento: "È preferenza personale"
No non lo è. A meno che tu non sia una squadra di un solo uomo che parte su Marte, no. La maggior parte delle volte ci saranno altre persone a leggere / modificare il codice. In qualsiasi serio team di codifica questo sarà il modo raccomandato, quindi non è una "preferenza personale".
Argomento: "il codice funzionerà perfettamente"
Così fa il codice spaghetti! Significa che va bene crearlo?
Argomento: "ha funzionato bene per me"
Nella mia carriera ho visto tanti bug creati a causa di questo problema. Probabilmente non ricordi quante volte hai commentato 'DoSomething()'
e sconcertato dal perché 'SomethingElse()'
si chiama:
if (condition)
DoSomething();
SomethingElse();
O aggiunto "SomethingMore" e non si è accorto che non verrà chiamato (anche se il rientro implica altrimenti):
if (condition)
DoSomething();
SomethingMore();
Ecco un esempio di vita reale che ho avuto. Qualcuno voleva disattivare tutta la registrazione in modo da eseguire find & replace "console.log"
=> //"console.log"
:
if (condition)
console.log("something");
SomethingElse();
Vedi il problema?
Anche se pensi "questi sono così banali, non lo farei mai"; ricorda che ci sarà sempre un membro del team con capacità di programmazione inferiori a te (si spera che tu non sia il peggiore del team!)
Argomento: "è più leggibile"
Se ho imparato qualcosa sulla programmazione, è che le cose semplici diventano molto complesse molto rapidamente. È molto comune che questo:
if (condition)
DoSomething();
diventa quanto segue dopo che è stato testato con diversi browser / ambienti / casi d'uso o aggiunte nuove funzionalità:
if (a != null)
if (condition)
DoSomething();
else
DoSomethingElse();
DoSomethingMore();
else
if (b == null)
alert("error b");
else
alert("error a");
E confrontalo con questo:
if (a != null) {
if (condition) {
DoSomething();
}
else {
DoSomethingElse();
DoSomethingMore();
}
} else if (b == null) {
alert("error b");
} else {
alert("error a");
}
PS: i punti bonus vanno a chi ha notato il bug nell'esempio sopra.