Esto es algo que estoy haciendo mucho últimamente.
Ejemplo:
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'
}
}
A menudo, la escalera if / else es significativamente más complicada que esto ...
Ver la cláusula final? Es redundante Se supone que la escalera finalmente capturará todas las condiciones posibles. Por lo tanto, podría reescribirse así:
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'
}
}
Así es como solía escribir código, pero no me gusta este estilo. Mi queja es que la condición bajo la cual se ejecutará la última parte del código no es obvia por el código. Así comencé a escribir esta condición explícitamente para hacerla más evidente.
Sin embargo:
- Escribir explícitamente la condición exhaustiva final es mi propia idea, y tengo malas experiencias con mis propias ideas, por lo general la gente me grita sobre lo horrible que estoy haciendo, y (a veces mucho) más tarde descubro que realmente fue subóptimo;
- Una pista de por qué puede ser una mala idea: no es aplicable a Javascript, pero en otros idiomas, los compiladores tienden a emitir advertencias o incluso errores sobre el control que llega al final de la función. Dar a entender que hacer algo así podría no ser muy popular o lo estoy haciendo mal.
- Las quejas del compilador me hicieron a veces escribir la condición final en un comentario, pero supongo que hacerlo es horrible ya que los comentarios, a diferencia del código, no tienen efecto en la semántica del programa real:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
¿Me estoy perdiendo de algo? ¿O está bien hacer lo que describí o es una mala idea?