Розщеплення змінної
Розще́плення змі́нної (англ. Split Temporary Variable) — прийом рефакторингу, що дозволяє зменшити складність всередині методу, зробити метод простим для розуміння і полегшити подальшу роботу з ним.
Проблема
Є локальна змінна, яка використовується для зберігання різноманітних значень всередині методу (не рахуючи змінних циклів).
Приклад C#:
double temp = 2 * (height + width);
Console.WriteLine(temp);
temp = height * width;
Console.WriteLine(temp);
Рішення
Використати різні змінні для різних значень. Кожна змінна повинна відповідати тільки за одну певну річ.
Приклад C#:
readonly double perimeter = 2 * (height + width);
Console.WriteLine(perimeter);
readonly double area = height * width;
Console.WriteLine(area);
Причини рефакторингу
Якщо в процесі написання коду було «зекономлено» змінні всередині функції і повторно використано їх для різноманітних непов'язаних між собою цілей, то обов'язково почнуться проблеми в той момент, коли потрібно буде внести якісь оновлення в код, що містить ці змінні. Доведеться перевірити декілька разів усі випадки використання змінної, щоб впевнитись у відсутності помилки в коді.
Переваги
- Кожен елемент програми повинен відповідати тільки за одну річ. Це значно спрощує підтримку коду в майбутньому, оскільки можна спокійно змінити цей елемент, не побоюючись побічних ефектів.
- Покращується читабельність коду. Якщо змінна створювалася дуже давно, та ще і в поспіху, вона могла дістати елементарну назву, яка не пояснює суті значення, що зберігається, наприклад, k, n, value і так далі. Є шанс виправити ситуацію, призначивши новим змінним хороші назви, що відображають суть значень, що зберігаються. Наприклад, customerTaxValue, cityUnemploymentRate, clientSalutationString і так далі.
- Цей рефакторинг допомагає надалі виділити ділянки коду, що повторюються, в окремі методи.
Порядок рефакторингу
- Потрібно знайти місце в коді, де змінна вперше заповнюється якимось значенням. У цьому місці перейменуйте цю змінну, причому нова назва повинна бути зрозумілою і відповідати її значенню.
- Підставити її нову назву замість старої в місцях, де використовувалося це значення змінної.
- Повторити операцію для інших випадків, де змінній присвоюється нове значення.
Анти-рефакторинг
- Вбудовування змінної
Схожі рефакторинги
- Відокремлення змінної
- Видалення привласнень параметрам