Page 217 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 217

И что  ?

          Т е перь, увидев три разные шляпы, которые может носить функция (подпрограм­
       ма, подпрограмма с возвращаемым знаqением и чистая функция), мы сделаем паузу
       и спросим себя "И что?1 Почему эти различия имеют значение?"
          Моя задача в этой главе не столько объяснить синтаксис JavaScript, как заставить
       вас думать, почему  именно это так. Зачем нужны функции? Рассматривая функции
       как подпрограммы, можно найти один из ответов на этот вопрос: чтобы избежать
       повторов. Подпрограммы  позволяют  упаковывать общепринятые функциональные
       возможности - довольно очевидное преимущество.

                  Избежание повторения кода за счет упаковки является настолько ос­
                  новополагающей концепцией, что для нее есть собственная аббреви­
                  атура: DRY (don't repeat yourself - не повторяйся). Хотя она, возмож­
                  но, лингвистически и сомнительна (дословно - "сухой"), вы найдете,
                  что, описывая код, люди используют эту аббревиатуру как прилага-
                  тельное. "Этот код мог бы быть более СУХИМ': Если кто-то говорит
                  вам это, то имеет в виду, что вы излишне повторяете функциональ­
                  ные возможности.

          С чистыми функциями дела обстоят несколько хуже - они отвечают на вопрос
       "Почему" немного более абстрактным способом. Один из ответов мог бы быть та­
       ким:  "Потому что они делают программирование более похожим на математику!"
       Это ответ,  который мог бы вызвать следующий вопрос:  "И почему это хорошо?"
       Наилучший ответ мог бы быть таким: "Потому что чистые функции делают код про­
       ще и понятнее, облегчают его проверку и делают более переносимым':
          Функции, которые возвращают разные значения при разных обстоятельствах или
       имеют побочные эффекты, привязаны к своему  контексту. Если у вас есть действи -
       тельно  полезная функция с побочными эффектами, например, и  вы  извлекаете ее
       из одной программы, чтобы поместить в другую, это может не сработать. Или, что
       хуже того, она может сработать в 99% случаев, а в  1 % привести к серьезной ошибке.
       Любой программист знает, что неустойчивые ошибки - самый плохой вид ошибок:
       они могут долго оставаться незамеченными, а когда обнаруживаются, поиск причин
       их возникновения напоминает поиск иголки в стоге сена.
          Если чистые функции лучше всех, то  напрашивается вполне резонный  вывод,
       что вы всегда должны предпочитать чистые функции. Я говорю "предпочитать" по­
       скольку иногда проще создать функцию с побочными эффектами. Начинающие про­
       граммисты испытывают желание делать это весьма часто. Я не собираюсь отговари­
       вать вас от этого, я просто рекомендую вам остановиться и подумать, можете ли вы


       1 Композиция "So What" была исполнена Pink в 2008 году. - П римеч.  ред.


       220      Глава 1 3 .   Функции и мощь абстрактного мышления
   212   213   214   215   216   217   218   219   220   221   222