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
в фигурные скобки, чтобы мы могли использовать с ними переменные с блочной областью видимости.
Если у нас длинные логические выражения, мы должны разбить их на отдельную строку.