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

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

В конце статьи я также включу список ссылок на различные темы этой статьи.

Версии JavaScript

ECMAScript, JavaScript, ES5, ES6, ES2015, ES.Next
Звучит странно, правда?

Соглашение об именах для версий JavaScript оставляет место для улучшений, я согласен с вами. JavaScript был выпущен в 1995 году как часть Netscape Navigator и помечен как LiveScript. Год спустя он был переименован в JavaScript в результате (не очень) умной маркетинговой попытки, несмотря на то, что не имел никакого отношения к Java. Позже в том же году JavaScript был отправлен в ECMA International и снова получил новое название.

Сегодня JavaScript является общепринятым названием языка программирования, в то время как версии ECMA в основном используются для различения версий. Ну, после почти застоя в течение 15 лет…

JavaScript работает (почти) в каждом браузере, а это означает, что поставщики браузеров должны обновить свою собственную реализацию, чтобы она соответствовала новым версиям ECMA, что побуждает разработчиков отслеживать поддержку новых функций и ждать, пока поставщики браузеров будут следить за новыми разработками. .

Такие инструменты, как предварительный компилятор Babel, позволяют разработчикам использовать новые функции путем преобразования новых функций кода в более старые и совместимые с разными браузерами альтернативы.

Вот краткое изложение наиболее важных версий:

  • ECMAScript 3 (ES3) | Эта версия — то, что большинство людей многие годы воспринимало как обычный или ванильный JavaScript, и она была выпущена в 1999 году.
  • ECMAScript 5 (ES5) | Пятая редакция ECMAScript, стандартизированная в 2009 году, стала первым большим шагом для разработчиков и началом разделения разработчиков JavaScript на тех, кто знаком с новыми функциями, и тех, кто не. Это был главный вопрос интервью в течение долгого времени.
  • ECMAScript 6 (ES6)/ECMAScript 2015 (ES2015)
  • ECMAScript 7 (ES7)/ECMAScript 2016 (ES2016)
  • ECMAScript 8 (ES8)/ECMAScript 2017 (ES2017)
  • ECMAScript 9 (ES9)/ECMAScript 2018 (ES2018)

Как видите, начиная с 2015 года установился более размеренный и упорядоченный темп. Безусловно, самым большим и популярным шагом был переход на ES5, и хотя более поздние версии также имеют все более современные и удивительные функции, они бледнеют с точки зрения влияния на популярность по сравнению с ES5. .

Весь процесс завершается стадией предложения новых функций, которые еще не стандартизированы и официально не выпущены. Это хорошо для игры и всего такого, но это не так.

Где это актуально?

Практически везде: интерфейс, серверная часть, веб, мобильные устройства, может быть, даже ваша следующая офисная кофеварка… Говоря знаменитыми словами Джеффа Этвуда:

"Любое приложение, которое можно написать на JavaScript, в конечном итоге будет написано на JavaScript".

Машинопись (ТС)

Javascript уже давно подвергается критике многими за его многочисленные причуды, ленивую (свободную) печать и другие недостатки. Об этом были известные (и забавные) доклады и презентации (поищите выступление Гэри Бернхардта «Wat», если хотите получить представление). Короче говоря, JavaScript работает почти везде, и к настоящему времени вы можете создать практически все на JavaScript. Было бы здорово это исправить?

Что ж, поскольку JavaScript уже работает везде, вы не можете просто обновить его, чтобы устранить эти особенности и проблемы. Вот тут-то и появляется Typescript.

Typescript — это, по сути, уровень абстракции, надмножество JavaScript, который поставляется со своим собственным предварительным компилятором и позволяет программисту писать более чистый и строго типизированный код машинописного текста, который будет скомпилирован в обычный, но более качественный код JavaScript.

А чтобы облегчить перенос старого кода, весь JavaScript в основном является допустимым машинописным текстом, только без новых инструментов и преимуществ, поэтому перевод старых приложений в новую форму машинописного текста может происходить построчно или файл за файлом.

Каковы же преимущества Typescript?

  • Мы можем определить типы и интерфейсы для наших переменных, объектов и функций.
  • Мы получаем наследование и композицию для типов и интерфейсов.
  • Мы получаем мгновенную обратную связь (при поддержке IDE) о конфликтах типов при вызове функции, использовании переменной или получении вывода.
  • Typescript помогает вашей IDE предоставить вам больше информации и помощь с вашим кодом.
  • Мы получаем некоторую базовую помощь во время рефакторинга, поскольку типы и интерфейсы дают нам больше уверенности в нашем коде.
  • Типизированный код (с читаемыми именами переменных) уже предлагает базовую форму документации внутри кода без единой строки комментариев.
  • Некоторое количество ошибок можно отловить раньше.

Что Typescript не решит/не предложит?

  • Typescript не улавливает все ошибки в вашем коде, особенно при работе со сторонними API.
  • Я часто слышу, что Typescript уменьшит количество ошибок на 60%, но чтобы получить такое значительное улучшение, код должен быть довольно плохим даже для обычных уровней JavaScript.
  • Typescript — это дополнительная абстракция вашего кода. Хотя некоторые программисты клянутся в этом, новый сотрудник может не иметь возможности работать с вашей кодовой базой, если у него нет Typescript ноу-хау.
  • В зависимости от вашей кодовой базы некоторые пограничные случаи может быть сложно сопоставить с правильными типами/интерфейсами, что приведет к увеличению времени разработки.

Прежде чем мы двинемся дальше, я хотел бы быстро отметить, что, исходя из моего опыта, последний пункт в этом списке «CON» часто (не всегда) является признаком запаха кода, чем-то, что намекает на «магический код» или что-то, что написано либо слишком сложно, либо слишком умно, чтобы быть хорошим, стабильным и поддерживаемым кодом.

Это также подводит нас к одному из моих личных фаворитов в Typescript: он побуждает нас больше думать о коде, который мы пишем, прежде чем мы его напишем, мало чем отличаясь от TDD. При работе с отдельными командами над кодом Backend/API и Frontend предварительное определение контрактов API с помощью Typescript позволяет нам имитировать данные и работать независимо на основе сформированного контракта API между обеими командами.

Где это актуально?

Везде, где работает JavaScript: в браузере, на Node.js или Deno и в ваших приложениях. Специально для разработчиков DevOps и Backend, пишущих код Node.js и использующих более объектно-ориентированные языки, Typescript может быть дополнительным уровнем комфорта при написании JavaScript код.

Функциональное программирование (ФП)

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

Эта парадигма делает функциональный код легко тестируемым и предсказуемым и часто приводит к более чистому коду, более коротким функциям и общему коду, который легче читать и оспаривать на человеческом уровне.

Очень похоже на Typescript, Функциональное программирование не обязательно должно быть универсальным способом делать что-то. Использование концепций из функциональной парадигмы может значительно повысить качество и даже возможность повторного использования вашего кода, не заставляя вас полностью переписывать существующую кодовую базу, и даже значительно увязать с более строгой типизацией. JavaScript – это мультипарадигменный язык программирования, который позволяет нам брать лучшее из нескольких слов и использовать их там, где это наиболее эффективно.

Где это применимо?
Существуют полностью функциональные языки программирования с разным уровнем поддержки этой парадигмы, но в основном концепция Функционального программирования может использоваться где угодно. вы запускаете код JavaScript, так что опять же, это актуально как для внешнего интерфейса, так и для внутреннего (узла), а также для нативных приложений.

Проектирование через тестирование (TDD)

Разработка через тестирование — это практика разработки программного обеспечения, заключающаяся в написании тестов, которые соответствуют вашим ожиданиям или требованиям, прежде чем вы напишете код для их выполнения.

КРАСНЫЙ > ЗЕЛЕНЫЙ > СИНИЙ (тестирование, кодирование, рефакторинг)
TDD может хорошо вписаться в существующий рабочий процесс Agile и уходит своими корнями в Манифест Agile.

КРАСНЫЙ | Тест
Новая функция должна иметь полное описание ожидаемого результата. Теперь команда или разработчик могут преобразовать эти спецификации в один или несколько простых (модульных) тестов на основе своего первоначального понимания и либо проверить их вручную, либо, что предпочтительнее, интегрировать их в автоматизированное тестирование. Это приведет нас к нашему первому состоянию: «КРАСНЫЙ», потому что теперь эти тесты не пройдут.

ЗЕЛЕНЫЙ | Код
Второй шаг — написать самую простую версию кода для прохождения этих тестов. Идея состоит в том, чтобы внести самые минимальные изменения, необходимые для прохождения этих тестов и достижения второго состояния: «ЗЕЛЕНЫЙ».

СИНИЙ | Рефакторинг
Третий шаг — это проверка существующего кода и его тестирование на наличие пограничных случаев, проблем с производительностью и возможных оптимизаций кода, а также на предмет того, выполнены ли первоначальные требования к функциям.

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

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

Где это применимо?
Опять же, везде, где вы пишете код. Однако в этом случае есть небольшая проверка на реальность. Практика TDD создаст большую предварительную рабочую нагрузку, прежде чем вы сможете закончить задачу, и многие программисты размышляют, что TDD — это то, что они хотели бы делать, но их повседневная работа -повседневный бизнес не позволяет им следовать этим принципам.

В зависимости от того, насколько большой объем кода с помощью модульных тестов пытается достичь ваша команда, и сколько времени у вас есть, TDD может поначалу вызывать большие накладные расходы, и существует сильное предубеждение против него. Однако, по моему опыту, команды, которые адаптировали эту практику, применяют разумную меру здравого смысла и находят хороший баланс между охватом кода и производительностью команды (GTD или получением результата) на более поздних этапах разработки. В таких проектах существующие тесты значительно помогают отслеживать новые ошибки на ранней стадии и до их развертывания на клиентском сервере.

Реагировать, Angular и Vue

React, Angular и Vue — это три наиболее распространенных инструмента, которые можно использовать при создании веб-сайтов. Angular и Vue считаются фреймворками Javascript, которые поставляются с большим набором парадигм и ограничений, но в то же время предоставляют больше функциональности. . React, с другой стороны, можно рассматривать скорее как библиотеку, чем как фреймворк. Это дает разработчику больше свободы в настройке веб-сайта, что в то же время приводит к большей ответственности для разработчика, а также к увеличению занимаемой площади.

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

И моя нынешняя, и моя предыдущая команда решили использовать React не потому, что он был лучше, а потому, что он казался нам более естественным и имел хорошую кривую обучения для начала работы. Angular — это полноценный фреймворк со всеми прибамбасами, но он также может быть немного сложным для новых разработчиков. С другой стороны, Vue никогда не казался нам «правильным». Это не хорошо и не плохо, просто по-другому, и из этих трех, работа с React, казалось, больше всего напоминала работу с обычным JavaScript. Кроме того, переход на React + Typescript очень прост, и к настоящему времени мы перевели все основные проекты на Typescript.

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

Редукс

Redux — это контейнер предсказуемого состояния для приложений JavaScript.

Redux – это библиотека JavaScript с открытым исходным кодом для управления и централизации состояния приложения. Магазин Redux служит единой точкой истины, а простая однонаправленная система обмена сообщениями, лежащая в основе Redux, может помочь разработчикам создать масштабируемое и надежное клиентское приложение. решение данных.

Хотя Redux часто используется вместе с Angular или React, его можно использовать и в других сочетаниях, и он напоминает архитектуру Flux от Facebook во многом.

Всего 2 КБ для базовой установки, Redux крошечный, но его можно легко расширить с помощью пользовательского промежуточного программного обеспечения, и существуют существующие решения для интеграции выборки данных и других асинхронных задач. Благодаря Redux Toolkit (RTK) разработчики также освобождаются от бремени написания стандартного кода.

Где это применимо?
Опять же, это библиотека внешнего интерфейса, поэтому серверная сторона также не используется.

Подведение итогов

Я надеюсь, что эта статья помогла вам получить базовые знания о самых популярных словечках, используемых рекрутерами, менеджерами и некоторыми техническими специалистами. Я продолжу двумя подробными статьями о машинописном языке и функциональном программировании, их плюсах и минусах, а также приведу несколько примеров интеграции с другими вещами из сегодняшнего списка, такими как React и Redux.

Список ссылок
- React Docs
- Angular Docs
- Vue Docs
- Redux Docs
- Манифест TDD
- Документы Typescript
- Функциональное программирование

О Das Büro am Draht

Das Büro am Draht — это берлинская консалтинговая компания, помогающая нашим клиентам создавать устойчивые и адаптируемые цифровые платформы для поддержки сегодняшних бизнес-требований и даже запускать бизнес-модели завтрашнего дня, которые мы, возможно, еще не предвидим. Таким образом, мы тесно сотрудничаем на каждом этапе процесса цифровой трансформации — от цифровой стратегии до проектирования и разработки решений и оперативной поддержки. Наш гибкий подход к разработке универсальных и масштабируемых решений гарантирует, что наши клиенты постоянно обеспечивают привлекательный и персонализированный клиентский опыт. Чтобы узнать больше о том, как мы помогаем компаниям из разных отраслей, подпишитесь на нас в LinkedIn.

Хотите получать сообщения от наших экспертов на регулярной основе?
Подпишитесь на нашу рассылку (опубликованную на немецком языке) здесь.

Иллюстрации: kai_sinzinger