JavaScript

Композиция функций JavaScript: определение и введение для начинающих

Lorem ipsum dolor

Композиция функций в JS — это процесс, при котором выполнение одной функции передается в качестве аргумента другой функции. Фактически композиция помогает объединить более мелкие функции в единую.

С одной стороны, может показаться, что композиция функций в JS идет вразрез с основным принципом программирования. Основной принцип — разбивать сложные задачи на более мелкие и простые, потому что мелкими и простыми намного легче управлять. 

Композиция функций в JavaScript не идет вразрез с основным принципом программирования. Да, она создает ложные функции, объединяя более мелкие, но это необходимо для чистоты кода и правильного функционирования программы. От проблем в коде никто не застрахован, тем более в нашем современном оцифрованном мире. Например:

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

  2. В 2014 разработчики Вооруженных Сил США допустили оплошность в программном обеспечении радаров. Таким образом, радар не мог полноценно отслеживать летящие ракеты. Он обнаруживал их, когда было уже слишком поздно что-то предпринимать. Вооружение отправили на доработку.

  3. В 2015 году разработчики компании Боинг допустили ошибку в программном обеспечении самолетов. Летчикам приходилось «перезагружать» программное обеспечение самолетов через каждые 1500 летных часов, иначе ПО давало сбой. Никто не пострадал, ошибку вовремя заметили и ПО доработали.

Все это к тому, что ошибиться может каждый программист, для этого не важен уровень и статус. При чем здесь композиция функций JS? При том, что, изучив ее особенности, можно писать код с меньшим количеством ошибок.

Композиция функций в JS

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

Композиция функций в JavaScript — основа функционального программирования. Типичное описание композиции будет таким: «Используем функцию «f», которая принимает «х» и возвращает «х+3», также мы используем функцию «g», которая тоже принимает «х», но возвращает «х*4» объединение этих функций и есть композиция». Вот как это выглядит в коде:

const f = x => x+3;

const g = x => x*4;

console.log(f(g(6)))// результат будет «27»

Фактически мы взяли функцию «f» и вложили в нее функцию «g». Функции «g» мы передали аргумент «6». В результате выполнения мы в консоли увидим число «27», потому что «6*4=24», потом результат «24» передается в функцию «f», где мы имеем вычисление «24+3=27».

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

Композиция функций JS: более сложные примеры

Пропишем функцию «mySelect». Она будет получать значение из некоего объекта «myObj», но перед этим она должна будет получить значение «key», а потом вернуть нам значение из «myObj» по этому «key». На словах все звучит довольно запутанно, однако, взглянув на код, вы поймете, о чем речь.

Код функции «mySelect» будет таким:

const mySelect = key => myObj => myObj[key];

Давайте увидим нашу функцию в работе. Для этого мы создадим еще одну функцию «getFirstName», у которой будет аргумент «firstName» и список «worker», который будет массивом объектов со свойством «firstName». Вот как это выглядит в коде:

const mySelect = key => myObj => myObj[key];

 

const getFirstName = mySelect("firstName");

 

const worker = [

  {firstName:'Дормидонт'},

  {firstName:'Платон'},

  {firstName:'Федор'},

  {firstName:'Анфиса'},

  {firstName:'Анастасия'}, 

    ];

 

    console.log(mySelect(getFirstName)(worker)); //Результат вывода будет ["Дормидонт", "Платон", "Федор", "Анфиса", "Анастасия"]

Заключение

Композиция функций JS — это основа функционального программирования на JavaScript. Композиция функций также применяется в других языках программирования, поддерживающих принцип функционального программирования, например, Haskell или Python. Другие языки, поддерживающие объектно-ориентированное программирование, используют похожие конструкции в коде, но не с функциями, а классами или объектами. Важно понять, что композиция — это структура программирования, от которой никуда не деться, и неважно, на каком языке программирования вы разрабатываете собственную программу.

Схожие статьи

Оформляем красивый код JS. Как очистить свой код от лишнего мусора?
JavaScript

Оформляем красивый код JS. Как очистить свой код от лишнего мусора?

Учебный курс по React, часть 4: родительские и дочерние компоненты
JavaScript

Учебный курс по React, часть 4: родительские и дочерние компоненты

Node JS: плюсы и минусы популярной среды запуска JavaScript-приложений
JavaScript

Node JS: плюсы и минусы популярной среды запуска JavaScript-приложений

jQuery: что это такое? Самый популярный JavaScript Framework
JavaScript

jQuery: что это такое? Самый популярный JavaScript Framework

×