JavaScript - это простой в освоении язык программирования. Легко писать программы, которые работают и что-то делают. Однако сложно учесть все варианты использования и написать надежный код JavaScript.
В этой статье мы рассмотрим, как лучше всего работать с switch операторами и другими операторами сравнения.
Использование фигурных скобок для создания блоков в операторах switch и case
Если мы создадим блоки в операторах switch и case, мы сможем заключить переменные в области видимости блока.
Итак, вместо того, чтобы писать:
switch (foo) {
case 1:
let x = 1;
break;
case 2:
const y = 2;
break;
//...
}
Мы можем написать:
switch (foo) {
case 1: {
let x = 1;
break;
}
case 2: {
let x = 2;
break;
}
//...
}
Мы можем использовать x дважды, поскольку x недоступен за пределами блока case.
Тернеры не должны быть гнездовыми
Тернарные выражения не должны быть вложенными, поскольку их трудно читать.
Они тоже должны быть короткими.
Например, вместо написания:
const foo = val1 === val2 ? "foo" : val3 > val4 ? "baz" : null;
Как мы видим, это сложно понять.
Поэтому вместо этого мы должны написать следующее:
const foo = val1 === val2 ? "foo" : "baz";
Избегайте бесполезных тернарных выражений
У нас не должно быть бесполезных тернарных выражений.
Например, не требуется следующее:
const baz = c ? false : true;
Если c является логическим, мы можем просто присвоить его напрямую baz.
Если это не так, мы можем использовать функцию Boolean, чтобы преобразовать его в логическое значение.
Итак, мы можем написать:
const baz = !Boolean(c);
вместо.
Замкнутые выражения со смешанными операторами в круглых скобках
Мы должны заключать выражения со смешанными операторами в круглые скобки, чтобы их было легче читать.
Например, мы не должны писать:
const foo = a && b < 5 || c < 3 || d + 1 === 0;
Вместо этого мы должны написать:
const foo = ((a && b < 5) || (c < 3) || (d + 1)) === 0;
Теперь мы можем ясно видеть выражения, поскольку они разделены круглыми скобками.
Блоки
При создании блоков необходимо учитывать некоторые моменты.
Используйте фигурные скобки с многострочными блоками
Если у нас есть блоки, мы должны поставить скобки, нужны они или нет.
Например, вместо написания:
if (test) return true;
Мы пишем:
if (test) {
return true;
}
Точно так же с функциями вместо записи:
function foo() { return true; }
Мы пишем:
function foo() {
return true;
}
Если мы используем многострочные блоки с if и else, поместите else в ту же строку с закрывающей скобкой блока if
Например, вместо написания:
if (test) {
foo();
bar();
}
else {
baz();
}
Мы пишем:
if (test) {
foo();
bar();
} else {
baz();
}
Это экономит место, не влияя на удобочитаемость.
Если блок if всегда запускает оператор return, последующий блок else не нужен
Если у нас есть блок if, который всегда возвращается, то блок else никогда не будет запущен.
Следовательно, мы должны удалить блок else и поместить return за его пределы.
Например, вместо написания:
const foo = () => {
if (x) {
return x;
} else {
return y;
}
}
Мы пишем:
const foo = () => {
if (x) {
return x;
}
return y;
}
Контрольные заявления
В JavaScript есть более эффективные способы работы с операторами управления, чем другие.
Если наши контрольные утверждения слишком длинные, тогда каждое условие должно быть в новой строке
Например, если у нас есть:
if ((foo === 123 || bar === 'abc') && suprSuperSuperLong() && isSuprSuperSuperLong()) {
doSomething();
}
Затем мы должны привести его в порядок, написав:
if (
(foo === 123 || bar === 'abc') &&
suprSuperSuperLong() &&
isSuprSuperSuperLong()
) {
doSomething();
}
Это намного легче читать, чем первый пример.
Отсутствие оператора выбора вместо контрольных заявлений
Использование if легче понять, чем использование оператора && для запуска чего-либо, если условие равно true.
Например, вместо написания:
canRun && run();
Мы пишем:
if (canRun) {
run();
}
Заключение
Мы должны заключить операторы swiotchj и case в фигурные скобки, чтобы мы могли использовать с ними переменные с блочной областью видимости.
Если у нас длинные логические выражения, мы должны разбить их на отдельную строку.