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