Questa è una cosa che sto facendo molto ultimamente.
Esempio:
setCircle(circle, i, { current }) {
if (i == current) {
circle.src = 'images/25CE.svg'
circle.alt = 'Now picking'
} else if (i < current) {
circle.src = 'images/25C9.svg'
circle.alt = 'Pick failed'
} else if (i > current) {
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
}
Spesso la scala if / else è significativamente più complicata di questa ...
Vedi la clausola finale? È ridondante. La scala dovrebbe in definitiva catturare tutte le possibili condizioni. Quindi potrebbe essere riscritto in questo modo:
setCircle(circle, i, { current }) {
if (i == current) {
circle.src = 'images/25CE.svg'
circle.alt = 'Now picking'
} else if (i < current) {
circle.src = 'images/25C9.svg'
circle.alt = 'Pick failed'
} else {
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
}
Questo è il modo in cui scrivevo codice, ma non mi piace questo stile. La mia lamentela è che la condizione in cui verrà eseguita l'ultima parte del codice non è evidente dal codice. Ho quindi iniziato a scrivere esplicitamente questa condizione per renderla più evidente.
Però:
- Scrivere esplicitamente l'ultima condizione esaustiva è la mia idea, e ho brutte esperienze con le mie idee - di solito la gente mi grida quanto sia orribile quello che sto facendo - e (a volte molto) più tardi scopro che era davvero subottimale;
- Un suggerimento sul perché questa potrebbe essere una cattiva idea: non applicabile a Javascript, ma in altre lingue, i compilatori tendono ad emettere avvisi o errori sul controllo del raggiungimento della fine della funzione. Suggerire di fare qualcosa del genere potrebbe non essere troppo popolare o sto sbagliando.
- I reclami del compilatore mi hanno fatto talvolta scrivere la condizione finale in un commento, ma immagino che farlo sia orribile poiché i commenti, a differenza del codice, non hanno alcun effetto sulla semantica del programma reale:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Mi sto perdendo qualcosa? O va bene fare quello che ho descritto o è una cattiva idea?