Page 217 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 217
И что ?
Т е перь, увидев три разные шляпы, которые может носить функция (подпрограм
ма, подпрограмма с возвращаемым знаqением и чистая функция), мы сделаем паузу
и спросим себя "И что?1 Почему эти различия имеют значение?"
Моя задача в этой главе не столько объяснить синтаксис JavaScript, как заставить
вас думать, почему именно это так. Зачем нужны функции? Рассматривая функции
как подпрограммы, можно найти один из ответов на этот вопрос: чтобы избежать
повторов. Подпрограммы позволяют упаковывать общепринятые функциональные
возможности - довольно очевидное преимущество.
Избежание повторения кода за счет упаковки является настолько ос
новополагающей концепцией, что для нее есть собственная аббреви
атура: DRY (don't repeat yourself - не повторяйся). Хотя она, возмож
но, лингвистически и сомнительна (дословно - "сухой"), вы найдете,
что, описывая код, люди используют эту аббревиатуру как прилага-
тельное. "Этот код мог бы быть более СУХИМ': Если кто-то говорит
вам это, то имеет в виду, что вы излишне повторяете функциональ
ные возможности.
С чистыми функциями дела обстоят несколько хуже - они отвечают на вопрос
"Почему" немного более абстрактным способом. Один из ответов мог бы быть та
ким: "Потому что они делают программирование более похожим на математику!"
Это ответ, который мог бы вызвать следующий вопрос: "И почему это хорошо?"
Наилучший ответ мог бы быть таким: "Потому что чистые функции делают код про
ще и понятнее, облегчают его проверку и делают более переносимым':
Функции, которые возвращают разные значения при разных обстоятельствах или
имеют побочные эффекты, привязаны к своему контексту. Если у вас есть действи -
тельно полезная функция с побочными эффектами, например, и вы извлекаете ее
из одной программы, чтобы поместить в другую, это может не сработать. Или, что
хуже того, она может сработать в 99% случаев, а в 1 % привести к серьезной ошибке.
Любой программист знает, что неустойчивые ошибки - самый плохой вид ошибок:
они могут долго оставаться незамеченными, а когда обнаруживаются, поиск причин
их возникновения напоминает поиск иголки в стоге сена.
Если чистые функции лучше всех, то напрашивается вполне резонный вывод,
что вы всегда должны предпочитать чистые функции. Я говорю "предпочитать" по
скольку иногда проще создать функцию с побочными эффектами. Начинающие про
граммисты испытывают желание делать это весьма часто. Я не собираюсь отговари
вать вас от этого, я просто рекомендую вам остановиться и подумать, можете ли вы
1 Композиция "So What" была исполнена Pink в 2008 году. - П римеч. ред.
220 Глава 1 3 . Функции и мощь абстрактного мышления

