Всякий раз, когда идет дискуссия о том, какая парадигма программирования лучше, а вы стоите как…
Итак, давайте попробуем изменить это ....
- Что вообще такое функциональное программирование?
Функциональное программирование — это стиль программирования, при котором программы создаются путем применения и составления функций. Это декларативная парадигма программирования.
Функции являются первоклассными объектами в функциональном программировании — их можно использовать как переменные, передавать в качестве параметров другим функциям и возвращать из других функций.
2.Почему функциональное программирование?
Функциональное программирование возникло потому, что по мере роста масштаба приложения поддержка кода становится довольно утомительной.
FP абстрагирует наиболее избыточный код, используя и повторно используя функции, а функциональный код легче масштабировать и поддерживать по сравнению с другими парадигмами программирования.
О преимуществах функционального программирования можно прочитать здесь.
3.Как заниматься функциональным программированием?
- Чистые функции
- Функции высшего порядка
- Не повторяйте использование for или while use map, filter, reduce.
- использовать неизменяемые переменные
Делайте все с помощью функций:
Допустим, вы хотите напечатать утверждение: «XYZ — мой любимый игрок в крикет», где XYZ будет содержать имя любимого игрока в крикет пользователя.
//Imperative style in javascript let name = "M.S.Dhoni"; let statement = "is my favorite cricketer"; console.log(name+" "+statement); //Using functions in js let myFavoritePlayer = function(name){ return `${name} is my favorite player` ;} console.log(myFavoritePlayer("M.S.Dhoni"));
Обратите внимание, что в приведенном выше коде при использовании императивного стиля вы сосредотачиваетесь на пошаговом подходе к тому, как напечатать имя вашего любимого игрока. Если вы хотите изменить своего любимого игрока, вам придется переназначить имя переменной или использовать новую переменную.
Но в случае с функцией вы можете повторно использовать всю функцию для вывода каждый раз разных результатов.
Чистые функции:
функция возвращаемые значения одинаковы для одинаковых аргументов
функция приложение не имеет побочных эффектов
просто для данного ввода вы получите один и тот же вывод, несмотря ни на что, также функция не влияет ни на какие другие локальные или глобальные переменные. Он просто должен возвращать вывод для данного ввода.
в приведенном выше примере, если мы указываем имя проигрывателя, функция добавляет это имя и возвращает результат. У него нет побочных эффектов, поэтому функция чистая.
2. Функции высшего порядка:
функция высшего порядка — это функция, которая выполняет хотя бы одно из следующих действий:
- принимает одну или несколько функций в качестве аргументов (т. е. процедурный параметр, который является параметром процедуры, которая сама является процедурой),
- возвращает функцию в качестве результата.
мы можем передавать функции в качестве аргументов функциям более высокого порядка.
3. Отфильтровать карту и уменьшить:
Мы все использовали итеративный цикл for для перебора простого массива чисел для их вывода. Но вы можете использовать функцию карты для перебора массива.
предположим, вы хотите перемножить все числа в массиве.
const numbers = [65, 44, 12, 4]; const newArr = numbers.map(myFunction) function myFunction(num) { return num * 10; }
здесь вам не нужно использовать цикл for, и это упрощает жизнь всем. вы можете найти карту, фильтр и уменьшить в ссылках.
4.Используйте неизменяемость:
Неизменяемость означает, что после того, как переменной функции или переменной будет присвоено какое-либо значение, вы не должны изменять это значение.
Но почему нет?
Потому что становится очень сложно отслеживать изменения в переменных, а отладка кода становится намного сложнее.
Но если мы назначаем новую переменную каждый раз, когда нам нужно другое значение для аналогичной переменной, тогда программа может работать медленнее и занимать намного больше места.
Для эффективной неизменности мы можем использовать Постоянные структуры данных.
Функциональное программирование довольно обширно и требует изучения гораздо большего. Так что этот пост — только начало понимания парадигмы.