Розще́плення змі́нної (англ. 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);


Причини рефакторингуРедагувати

Якщо в процесі написання коду було «зекономлено» змінні всередині функції і повторно використано їх для різноманітних непов'язаних між собою цілей, то обов'язково почнуться проблеми в той момент, коли потрібно буде внести якісь оновлення в код, що містить ці змінні. Доведеться перевірити декілька разів усі випадки використання змінної, щоб впевнитись у відсутності помилки в коді.

ПеревагиРедагувати

  1. Кожен елемент програми повинен відповідати тільки за одну річ. Це значно спрощує підтримку коду в майбутньому, оскільки можна спокійно змінити цей елемент, не побоюючись побічних ефектів.
  2. Покращується читабельність коду. Якщо змінна створювалася дуже давно, та ще і в поспіху, вона могла дістати елементарну назву, яка не пояснює суті значення, що зберігається, наприклад, k, n, value і так далі. Є шанс виправити ситуацію, призначивши новим змінним хороші назви, що відображають суть значень, що зберігаються. Наприклад, customerTaxValue, cityUnemploymentRate, clientSalutationString і так далі.
  3. Цей рефакторинг допомагає надалі виділити ділянки коду, що повторюються, в окремі методи.

Порядок рефакторингуРедагувати

  1. Потрібно знайти місце в коді, де змінна вперше заповнюється якимось значенням. У цьому місці перейменуйте цю змінну, причому нова назва повинна бути зрозумілою і відповідати її значенню.
  2. Підставити її нову назву замість старої в місцях, де використовувалося це значення змінної.
  3. Повторити операцію для інших випадків, де змінній присвоюється нове значення.

Анти-рефакторингРедагувати

  • Вбудовування змінної

Схожі рефакторингиРедагувати

  • Відокремлення змінної
  • Видалення привласнень параметрам

Допомагає іншим рефакторингамРедагувати

ПосиланняРедагувати