Page 63 - 4787
P. 63

7 ПОКРАЩЕННЯ ІСНУЮЧОГО КОДУ НА ОСНОВІ РЕФАКТОРИНГУ

                     Значна частина рефакторингів полягає в складанні методів, які правильним


               чином  оформляють  код.  Майже  завжди  проблеми  виникають  через  занадто


               довгі  методи,  які  часто  містять  масу  інформації,  приховану  під  складною

               логікою, яку вони зазвичай в собі містить. Основним типом рефакторингу тут


               служить  «Виділення  методу»  (Extract  Method),  у  результаті  якого  фрагмент


               коду перетворюється в окремий метод. «Вбудовування методу» (Inline Method),

               по  суті,  є  протилежною  процедурою:  виклик  методу  замінюється  при  цьому


               кодом,  що  містяться  в  тілі.  «Вбудовування  методу»  (Inline  Method)  потрібен


               мені після проведення декількох виділень, коли я бачу, що якісь із отриманих

               методів більше не виконують свою частку роботи або потрібно реорганізувати


               спосіб розділення коди на методи.

                     Найбільша  проблема  «Виділення  методу»  (Extract  Method)  пов'язана  з


               обробкою локальних змінних і, перш за все, з наявністю тимчасових змінних.


               За  допомогою  «Заміни  тимчасової  змінної  викликом  методу»  (Replace  Temp

               with  Query)  можна  значної  кількості  тимчасових  змінних.  Якщо  тимчасова


               змінна використовується для різних цілей, можна застосовувати « Розщеплення


               тимчасової  змінної»  (Split  Temporary  Variable),  щоб  полегшити  подальшу  її

               заміну.


                     Однак іноді тимчасові змінні виявляються занадто складними для заміни .


               Тоді  використовують  тип    «Заміна  методу  об'єктом  методу»  (Replace  Method

               with Method Object). Це дозволяє розкласти навіть найбільш заплутаний метод,


               але ціною введення нового класу для виконання завдання.










                                                                                                             62
   58   59   60   61   62   63   64   65   66   67   68