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

l
       const  year  =  new  Date ( )   . g etFu l Year ( ) ;
       i f ( y ear  %  4  ! = =  0 )   console . l o ( ' $  { y ear}  не  високосны . ' )
                                   g
                                                         й
                                                           й
                                         g
       else  i f ( y ear  %  1 0 0   ! =   0 )   console . l o ( ' $ { y ear }  високосны . ' )
                                    l
       else  i f   ( year  %  4 О О  ! =  О )   conso e .   log (  $ '    { year }  не  високосный . ' )
       else  console . l og  ( '  { $year }  високосный ' ) ;
          Вообразите, что вы должны выполнить этот код в программе 10 или даже 1 0 0 раз.
       Т е перь предположим, что понадобилось изменить формулировку сообщения, кото­
       рое выводится на консоль; вам придется найти все случаи использования этого кода
       и в каждом изменить по четыре строки! Это именно та проблема, которую решают
       подпрограммы. В JavaScript эту потребность может удовлетворить функция.
       function  printLeapYearStatus ( )    {
           const  year  =  new  Date ( )   . g etFullYear ( ) ;
           i f   ( year  %  4  ! ==  О )   console . log (  $ { year }  не  високосный . ' )

                                         '
                                                               й
           else  i f ( y ear  %  1 0 0   ! =   0 )   console . l og  ( ' $  { y ear}  високосны . ' )
                                                                  й
                                             g
           else  i f ( y ear  %  4 0 0   ! =   0 )   console . l o ( ' $  { y ear }  не  високосны . ' )
           else  console . log ( ' { $ year }  високосный . ' )  ;
          Мы создали м1-югократно  используемую  подпрограмму  (функцию)  printLeap
       YearStatus. Т е перь это должно быть вам вполне знакомо.
          Обратите  в н и мание  на  имя,  которое  мы  выбрали  для  функции:
                                                 S
       printLeapYearStatus. Почему не getLeapYear t atus или leapYearStatus, или про­
       сто leapYe r ? Хотя эти имена были бы короче, они упускают важную деталь: эта
                 a
       функция просто выводит текущее состояние високосного года. Осмысленное имя
       функции - это отчасти наука, отчасти искусство. Имя - не для JavaScript, его не
       заботит, какое имя вы используете. Имя - для людей (или для вас в будущем). Ког­
       да вы называете функции, думайте о том,  что представит себе  человек,  если  будет
       судить о функции только  по ее имени. В  идеале  имя  должно  точно  сообщать, что
       делает функция. С другой стороны, имя функции может быть слишком подробным.
       Например, мы могли бы назвать эту функцию calculateCurrentLeapYearStatusAn
       dPrintToConsole, но дополнительная информация в таком длинном имени явно за­
       шкаливает. Вот где начинается искусство.


       Функции как под п р ограммы, возвращаю                   щи е   значе н и е

          Функция printLeapYearStatus в  нашем предыдущем примере - это подпро­
       грамма в обычном смысле слова: она лишь объединяет несколько функциональных
       возможностей для удобства многократного использования, не более. Это простейшее
       использование функций, к которому вы будете прибегать не очень часто, и даже еще
       реже, когда ваш подход к программированию станет более сложным и абстрактным.
       Давайте сделаем следующий шаг в направлении абстрактного мышления и рассмот­
       рим функции как подпрограммы, которые возвращают значение.


       21 б    Глава 13. Функции и мощь абстрактного мышления
   208   209   210   211   212   213   214   215   216   217   218