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. Другие языки, поддерживающие объектно-ориентированное программирование, используют похожие конструкции в коде, но не с функциями, а классами или объектами. Важно понять, что композиция — это структура программирования, от которой никуда не деться, и неважно, на каком языке программирования вы разрабатываете собственную программу.

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

Учебный курс по React, часть 5: начало работы над TODO-приложением, основы стилизации
JavaScript

Учебный курс по React, часть 5: начало работы над TODO-приложением, основы стилизации

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

Учебный курс по React, часть 12: практикум, третий этап работы над TODO-приложением

Байт-код Java: определение, инструкции, методы написания и примеры
JavaScript

Байт-код Java: определение, инструкции, методы написания и примеры

Учебный курс по React, часть 10: практикум по работе со свойствами компонентов и стилизации
JavaScript

Учебный курс по React, часть 10: практикум по работе со свойствами компонентов и стилизации