Кодирование очень обширно, и существует множество различных способов реализации одной и той же бизнес-логики в коде. В дополнение к этому разные языки предоставляют разные синтаксисы/операторы для выполнения задачи.

Сегодня мы увидим 6 способов в JavaScript, которые могут сэкономить ваши строки кода, а также повысить его понятность. А также увидите разницу в том, как выглядит код после их реализации.

1. Тернарный оператор

Это наиболее часто используемая замена оператора if-else. Помимо JavaScript, он доступен и на других языках.

Тернарный оператор определяется в следующем синтаксисе:

<condition> ? <what to do if true> : <what to do if false>

Пример кода без тернарного оператора:

if(a>b){
   console.log('A is greater')
} else {
   console.log('B is greater')
}

Пример кода с тернарным оператором

a>b ? console.log('A is greater') : console.log('B is greater')

Рабочий пример на консоли Google Chrome

10>5 ? console.log('10 is greater') : console.log('5 is greater') 
// prints 10 is greater
10>15 ? console.log('10 is greater') : console.log('15 is greater') // prints 15 is greater

2. Короткое замыкание

Этот метод можно использовать, если вы хотите использовать простое условие if. Его можно использовать с помощью оператора &&.

Пример кода с использованием условия if

if(a===b){
  executeFunction()
}

Пример кода с использованием короткого замыкания

a===b && executeFunction()

если условие (a===b) оценивается как ложное, то оператор после && (здесь executeFunction) не будет выполнен. Таким образом, мы можем добиться того же потока, что и при условии if.

Это может быть связано для замены нескольких операторов if

a===b && x===y && executeFunction()
(a===b || x===y) && executeFunction()

Рабочий пример на консоли Google Chrome

10===10 && 1===1 && console.log('ok')  // prints ok
10===10 && 1===2 && console.log('ok')  // prints false
(10===10 || 1===2) && console.log('ok') // prints ok

3. Необязательный оператор цепочки

Необязательный оператор цепочки используется в случае объектов. Он может проверять наличие свойств объекта и возвращает false, если свойство не существует для объекта.

Рассмотрите следующий объект

const obj = {
  name:{
      firstName: 'Neelesh',
      lastName: 'Arora'
  }
}

Пример кода без дополнительного оператора цепочки

if(obj.name){
   if(obj.name.firstName){
      console.log(obj.name.firstName)
   }
}
if(obj.name && obj.name.firstName){
    console.log(obj.name.firstName)
}

Пример кода с необязательным оператором цепочки

console.log(obj.name?.firstName)

4. Нулевой оператор объединения

Тернарный оператор уже сокращает код по сравнению с if-else. Этот оператор (??) может сделать код еще короче.

Пример кода без нулевого оператора объединения

return obj?.name ? obj.name : 'Name doesn't exist'

Пример кода с нулевым оператором объединения

return obj?.name ?? 'Name doesn't exist'

Этот код возвращает само obj.name, если оно существует, иначе возвращает сообщение — «Имя не существует», если obj.name не существует.

5. Использование общего возврата вместо возврата в блоке if-else

Это так просто. Просто изменив несколько строк кода, мы получим более чистый и лучший код.

Код без изменений

function a(arg){
   if(arg===0){
      return 'Argument is zero'
   }else if(arg>0){
       return 'Argument is a positive number
   }else{
      return 'Argument is a negative number'
   }
}

Код с изменениями

function a(arg){
   if(arg===0){
      return 'Argument is zero'
   }else if(arg>0){
       return 'Argument is a positive number
   }
   return 'Argument is a negative number'   
}

6. Избегать возврата new Promise() и напрямую использовать методы класса Promise

Код большего размера

function isPositiveNumber(num){
   return new Promise((resolve,reject)=>{
      if(num > 0){
         resolve(true)
      }
      reject(false)
   })
}

Сокращенный код

function isPositiveNumber(num){
   num > 0 ? Promise.resolve(true) : Promise.reject(false)
}

Хорошо!

«Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям», — Мартин Фаулер.

Следуя приведенному выше высказыванию Мартина Фаулера, крайне важно понимать, что качественный код может не только повысить производительность, но и помочь другим разработчикам легко понять и ознакомиться со всей кодовой базой.

На этом я заканчиваю эту статью и надеюсь, что эти советы определенно помогут писать чистый и лучший код.