Das ist eine Sache, die ich in letzter Zeit viel mache.
Beispiel:
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'
}
}
Oft ist die if / else-Leiter wesentlich komplizierter ...
Siehe die letzte Klausel? Es ist überflüssig. Die Leiter soll letztendlich alle möglichen Bedingungen erfassen. So könnte es so umgeschrieben werden:
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'
}
}
So habe ich früher Code geschrieben, aber ich mag diesen Stil nicht. Meine Beschwerde ist, dass die Bedingung, unter der der letzte Teil des Codes ausgeführt wird, aus dem Code nicht ersichtlich ist. Ich habe daher begonnen, diese Bedingung explizit zu schreiben, um sie deutlicher zu machen.
Jedoch:
- Das explizite Schreiben der endgültigen erschöpfenden Bedingung ist meine eigene Idee, und ich habe schlechte Erfahrungen mit meinen eigenen Ideen - normalerweise schreien mich die Leute an, wie schrecklich das ist, was ich tue - und (manchmal viel) später finde ich heraus, dass es tatsächlich so war suboptimal;
- Ein Hinweis, warum dies eine schlechte Idee sein kann: Nicht anwendbar auf Javascript, aber in anderen Sprachen geben Compiler Warnungen oder sogar Fehler aus, wenn die Steuerung das Ende der Funktion erreicht. Der Hinweis, so etwas zu tun, ist vielleicht nicht allzu beliebt oder ich mache es falsch.
- Compiler-Beschwerden haben mich manchmal dazu gebracht, die endgültige Bedingung in einen Kommentar zu schreiben, aber ich denke, dies ist schrecklich, da Kommentare im Gegensatz zu Code keinen Einfluss auf die tatsächliche Programm-Semantik haben:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Vermisse ich etwas Oder ist es in Ordnung, das zu tun, was ich beschrieben habe, oder ist es eine schlechte Idee?