Це те, чим я багато займаюся останнім часом.
Приклад:
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'
}
}
Часто сходи if / else значно складніше, ніж ця ...
Бачите заключний пункт? Це зайве. Драбина повинна врешті-решт вловити всі можливі умови. Таким чином, це можна було б переписати так:
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'
}
}
Ось як я писав код, але мені цей стиль не подобається. Моя скарга полягає в тому, що умова, при якій буде виконуватися остання частина коду, не очевидна з коду. Таким чином я почав чітко писати цю умову, щоб зробити її більш очевидною.
Однак:
- Явно пишу остаточну вичерпну умову - це моя власна ідея, і я маю поганий досвід власних ідей - зазвичай люди кричать на мене, як жахливо те, що я роблю, - і (іноді набагато) пізніше я дізнаюся, що це було насправді субоптимальний;
- Один натяк, чому це може бути поганою ідеєю: Не застосовується до Javascript, але в інших мовах компілятори, як правило, видають попередження або навіть помилки щодо контролю над досягненням кінця функції. Натякаючи робити щось подібне, може бути не надто популярним або я роблю це неправильно.
- Скарги компілятора змушували мене іноді писати остаточну умову в коментарі, але я думаю, що це жахливо, оскільки коментарі, на відміну від коду, не впливають на фактичну семантику програми:
} else { // i > current
circle.src = 'images/25CB.svg'
circle.alt = 'Pick chance'
}
Я щось пропускаю? Або добре робити те, що я описав, або це погана ідея?