Ответ 1
Нет, это неплохая практика. Собственно, это хорошая практика. Таким образом, вы не повторяетесь.
Кроме того, посмотрите документацию: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/switch
В настоящее время я работаю над jQuery script с помощью оператора switch, и мне было интересно, какое лучшее решение, когда несколько "случаев" делят некоторые свойства, скажем, у меня есть этот шаблон:
switch (settings.xxx) {
case 'case1':
Execute some code
break;
case 'case2':
Execute some code
break;
case 'case3':
Execute some code
break;
}
В каждом случае у меня довольно много кода, который частично повторяется, потому что некоторые свойства являются общими для трех случаев. Поэтому мой вопрос: могу ли я сделать то же самое с:
switch (settings.xxx) {
case 'case1':
case 'case2':
case 'case3':
Execute some code
break;
}
switch (settings.xxx) {
case 'case1':
case 'case2':
Execute some code
break;
case 'case2':
case 'case3':
Execute some code
break;
}
Или это плохая практика?
Нет, это неплохая практика. Собственно, это хорошая практика. Таким образом, вы не повторяетесь.
Кроме того, посмотрите документацию: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/switch
Лучшая практика заключается в том, чтобы избежать повторения кода. Таким образом, если вам потребуется изменить код, вам не нужно будет делать это в нескольких местах.
В ситуации, когда какой-то код применяется только к некоторым случаям, вы можете оставить перерыв, и выполнение завершится в следующем разделе после выполнения первого раздела. Это применимо только тогда, когда код специального кода может быть выполнен до кода общего кода. Будьте осторожны, когда вы это сделаете, и добавьте комментарии, четко заявляя, что вы делаете это намеренно. В противном случае, если код будет впоследствии отредактирован, кто-то еще может не понимать, что он намерен, и добавить разрыв там, где он отсутствует. См. Ниже:
switch (settings.xxx) {
case 'case1':
case 'case2':
Execute some code that applies to cases 1 & 2
// break left out to allow execution to fall through
case 'case3':
Execute some code that applies to cases 1 - 3
break;
case 'case4':
Execute different code
break;
}