Пишем код без let в JavaScript | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Professional
-3%
Разработчик на Spring Framework
-5%
iOS Developer. Professional
-8%
Golang Developer. Professional
-6%
Agile Project Manager
-5%
C# ASP.NET Core разработчик
-6%
Android Developer. Basic
-10%
React.js Developer
-4%
MS SQL Server Developer
-8%
Scala-разработчик
-8%
Java Developer. Basic
-8%
Разработчик IoT
-13%
PostgreSQL Backend-разработчик на PHP Алгоритмы и структуры данных Разработчик программных роботов (RPA) на базе UiPath и PIX Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Vue.js разработчик VOIP инженер NoSQL Супер-практикум по использованию и настройке GIT Symfony Framework iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
DevOps практики и инструменты
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Экcпресс-курс «ELK»
-10%
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Разработчик IoT
-13%
Основы Windows Server Разработчик программных роботов (RPA) на базе UiPath и PIX Reverse-Engineering. Professional Внедрение и работа в DevSecOps Administrator Linux. Advanced Infrastructure as a code in Ansible Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Пишем код без let в JavaScript

JS_Deep_22.11-5020-65f9e8.png

Многие знают, что для объявления переменных в JS нежелательно применять ключевое слово var. Но не все знают, что ключевое слово let тоже лучше не использовать. Дело в том, что объявленные с его помощью переменные могут быть переназначены, что усложнит анализ кода. И если вы применяете let, то надо учитывать возможные побочные эффекты. Например, вы можете случайно присвоить переменной неверное значение, что в итоге приведёт к дополнительной трате времени на отладку. А оно вам надо?

Альтернатива let — ключевое слово const. Да, оно тоже не даёт стопроцентную гарантию отсутствия проблем, но упрощает анализ кода и запрещает переназначения. Да и вообще, зачем вам let, если во многих случаях код, который переназначает значения переменных, можно извлечь в отдельную функцию.

Рассмотрим простой пример с let:

let discount;

if (isLoggedIn) {
  if (cartTotal > 100  && !isFriday) {
    discount = 30;
  } else if (!isValuedCustomer) {
    discount = 20;
  } else {
    discount = 10;
  }
} else {
  discount = 0;
}

А теперь то же самое, но с извлечением в функцию:

const getDiscount = ({isLoggedIn, cartTotal, isValuedCustomer}) => {
  if (!isLoggedIn) {
    return 0;
  }

  if (cartTotal > 100  && !isFriday()) {
    return 30;
  }

  if (!isValuedCustomer) {
    return 20;
  }

  return 10;
}

Так просто?

В принципе, да, однако программировать без let может всё равно показаться сложным, но это только поначалу. Зато в результате ваш код выиграет с точки зрения читабельности и станет менее сложным. Да и вообще, благодаря полезной привычке писать код без let, вы станете более дисциплинированным, ведь станете разбивать код на несколько мелких, но зато более управляемых функций. В конечном итоге код выиграет в плане разделения задач, а кодовая база станет более поддерживаемой.

Кстати, вот предлагаемая конфигурация ESLint:

rules:
  fp/no-let: warn

Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться