Bu son zamanlarda çok yaptığım bir şey.
Misal:
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'
}
}
Çoğu zaman if / else merdiveni bundan çok daha karmaşıktır ...
Son maddeyi görüyor musunuz? Gereksiz. Merdivenin nihayetinde tüm olası koşulları yakalaması gerekiyor. Böylece şöyle yeniden yazılabilir:
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'
}
}
Ben kod yazmak için kullanılan bu, ama bu tarzı sevmiyorum. Benim şikayetim, kodun son bölümünün yürütüleceği koşulun koddan belirgin olmamasıdır. Böylece daha belirgin hale getirmek için bu durumu açıkça yazmaya başladım.
Ancak:
- Nihai kapsamlı koşulu açıkça yazmak benim fikrimdir ve kendi fikirlerimle kötü deneyimlerim var - genellikle insanlar bana ne yaptığımın ne kadar korkunç olduğunu bağırıyorlar - ve (bazen çok daha sonra) bunun gerçekten olduğunu öğrendim standart altı;
- Bunun neden kötü bir fikir olabileceğine dair bir ipucu: Javascript için geçerli değildir, ancak diğer dillerde derleyiciler işlevin sonuna ulaşma konusunda uyarılar ve hatta hatalar verme eğilimindedir. Böyle bir şey yapmak ima etmek çok popüler olmayabilir ya da yanlış yapıyorum.
- Derleyici şikayetleri bazen bir yorumda son durumu yazmamı sağladı, ancak kodun aksine yorumların gerçek program semantiği üzerinde hiçbir etkisi olmadığı için bunu yapmak korkunç:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Bir şey mi kaçırıyorum? Yoksa tarif ettiğim şeyi yapmak uygun mu yoksa kötü bir fikir mi?