Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ
Рефакторинг – це процес змінювання програмної системи, при якому не змінюється зовнішня поведінка програми, але поліпшуються її внутрішня структура та стиль уже написаного коду.
Рефакторинг здійснює зміни, пов'язані з методами, переміщеннями функцій між об'єктами, організацією даних, спрощенням умовних виразів і викликів методів, задачами узагальнення (виділення інтерфейсу, підкласу, батьківського класу тощо).
Перелічимо коротко деякі з елементів рефакторингу.
Зміна сигнатури методу полягає в додаванні, зміні або видаленні параметра методу. Змінивши сигнатуру методу, необхідно скорегувати звернення до нього в коді всіх клієнтів. Ця зміна може торкнутися зовнішнього інтерфейсу програми. Якщо програмісту не доступні всі клієнти інтерфейсу, то може знадобитися та чи інша форма реєстрації змін інтерфейсу.
Інкапсуляція поля – якщо в класі є відкрите поле, то необхідно зробити його закритим і забезпечити методи доступу.
Виділення класу – іноді клас реалізує функцію, яку слід розподілити між кількома класами. Тоді рефакторинг дозволяє створити новий клас, перемістити відповідні атрибути й методи зі старого класу в новий.
Виділення підкласу – якщо клас виконує різні види робіт, то доцільно створити підкласи, які йому спадкують і виконують кожен свій вид роботи.
Виділення надкласу – якщо маємо кілька класів зі схожими методами й полями, то можна перемістити їх у надклас (батьківський для всіх даних підкласів).
Виділення інтерфейсу – якщо кілька клієнтів використовують одну підмножину інтерфейсу класу або в кількох класах певна частина інтерфейсу спільна, то рефакторинг забезпечує виділення цієї підмножини в окремий інтерфейс.
Виділення локальної змінної – якщо певний вираз обчислюється в тілі методу в кількох місцях, то його значення слід обчислити один раз і запам'ятати в новій локальній змінній. Наприклад, код
func(a+b, (a+b) / 2, a+b–c);
слід рефакторизувати в
t=a+b;
func(t, t/2, t–c);
попередньо оголосивши t локальною змінною відповідного типу.