A Программирование парадигма это способ размышления о строительстве программного обеспечения, основанный на нескольких определяющих принципах. Функциональное программирование является одной из таких парадигмов, которая состоит из Чистые функции и который избегает Общее состояние , изменяемые данные и побочные эффекты Анкет Функциональное программирование – это декларатив Вместо того, чтобы императив, и в отличие от объектно -ориентированного программирования, состояние применения течет через чистые функции.
Функциональный код имеет тенденцию быть более кратким, более предсказуемым и простым в тестировании, чем императивный код, но может иметь крутой кривую обучения, поэтому его можно пугать. Я надеюсь, что эта статья прояснит вам некоторые вещи и дает фундаментальное понимание функционального программирования и ее преимуществ. Чтобы начать понимание того, что такое функциональное программирование, вы должны начать с понимания некоторых основных понятий.
Чистые функции
Первая фундаментальная концепция для изучения – это чистые функции. Чистые функции необходимы для различных целей, включая надежную параллелизм, приложения React и Redux, а также функциональное программирование. Давайте рассмотрим, что делает функцию «чистой»:
- Чистая функция, учитывая одинаковые входы, всегда возвращает один и тот же выход
- Чистая функция не имеет побочных эффектов (подробнее об этом позже)
Чистые функции полностью независимы от внешнего состояния, поэтому они невосприимчивы ко многим ошибкам, которые имеют отношение к общему, изменяемому состоянию. Эта независимость также делает чистые функции чрезвычайно простыми в перемещении, рефакторе и реорганизации в коде, что делает ваши программы более адаптируемыми к будущим изменениям.
Избегайте общего состояния
Общее состояние – это любая переменная, объект или пространство памяти, которая существует в общем объеме или как свойство объекта, передаваемого между областями. Проблема с общим состоянием заключается в том, что для понимания последствий функции вы должны знать всю историю каждой общей переменной, которую использует или влияет функция. Вторая проблема, связанная с общим состоянием, заключается в том, что изменение порядка, в котором вызываются функции, может вызвать линию сбоев. Функциональное программирование избегает общего состояния, вместо этого полагаясь на неизменные структуры данных и чистые вычисления для получения новых данных из существующих данных.
Неизменность
В качестве напоминания, неизбежный объект – это объект, который не может быть изменен после его создания. Если вы хотите изменить неизменную объект, следующая лучшая вещь – создать новый объект с новым значением. Необвишаемость является центральной концепцией функционального программирования, потому что без него история состояния теряется, а ошибки могут проникнуть в ваше программное обеспечение.
Побочные эффекты
Побочным эффектом является любое изменение состояния применения, которое наблюдается за пределами вызываемой функции, отличной от ее возврата. Примеры побочных эффектов:
- Изменение любой внешней переменной или свойства объекта
- Регистрация в консоли
- Написание в файл
Функциональное программирование позволяет избежать побочных эффектов, которые облегчают ваше программное обеспечение для расширения, рефактории, отладки, тестирования и обслуживания.
Декларатив против императива
Функциональное программирование является декларативной парадигмой, что означает, что программная логика выражается без явного описания управления потоком. В тех случаях, когда императивный код обычно опирается на утверждения, части кода, которые выполняют некоторые действия, декларативный код использует выражения, код, который оценивается с некоторым значением посредством некоторой комбинации вызовов функций, значений и операторов. Другими словами, декларативные программы абстрагируют процесс управления потоком и сосредоточены на потоке данных: Что делать; Как абстрагируется.
Вывод
Функциональное программирование способствует чистым функциям вместо общего состояния и побочных эффектов, неизменности над изменчивыми данными и состава функций над императивным управлением потоком. Функциональное программирование часто легче понять, потому что оно не меняет состояние и зависит только от предоставленного ввода. По аналогичным причинам также легче проверить и отлаживать декларативную программу.
Для дальнейшего чтения по этой теме, проверьте некоторые из этих источников:
- Овладеть интервью JavaScript: что такое функциональное программирование? Эрик Эллиот
- Функциональное программирование парадигма Vishalxviii of Geeksforgeeks
- Принципы функционального программирования в JavaScript по TK Freecodecamp
Оригинал: “https://dev.to/christinamcmahon/what-is-functional-programming-5773”