To ostatnio dużo robię.
Przykład:
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'
}
}
Często drabina if / else jest znacznie bardziej skomplikowana niż ta ...
Zobacz ostatnią klauzulę? Jest zbędny. Drabina ma ostatecznie uchwycić wszystkie możliwe warunki. W ten sposób można go przepisać w ten sposób:
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'
}
}
Tak pisałem kod, ale nie lubię tego stylu. Moja skarga polega na tym, że warunek, w którym zostanie wykonana ostatnia część kodu, nie jest oczywisty z kodu. W ten sposób zacząłem pisać ten warunek, aby był bardziej widoczny.
Jednak:
- Wyraźnie napisanie ostatecznego wyczerpującego warunku jest moim własnym pomysłem i mam złe doświadczenia z własnymi pomysłami - zwykle ludzie krzyczą na mnie o tym, jak okropne jest to, co robię - i (czasami dużo) później dowiaduję się, że to rzeczywiście było nieoptymalny;
- Jedna wskazówka, dlaczego może to być zły pomysł: nie dotyczy JavaScript, ale w innych językach kompilatory mają tendencję do wydawania ostrzeżeń, a nawet błędów dotyczących kontrolowania osiągnięcia funkcji. Sugerowanie zrobienia czegoś takiego może nie być zbyt popularne lub robię to źle.
- Skargi kompilatora sprawiły, że czasami napisałem końcowy warunek w komentarzu, ale myślę, że jest to okropne, ponieważ komentarze, w przeciwieństwie do kodu, nie mają wpływu na rzeczywistą semantykę programu:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Czy coś brakuje? A może robienie tego, co opisałem, to zły pomysł?