Розще́плення змі́нної () — прийом рефакторингу, що дозволяє зменшити складність всередині методу, зробити метод простим для розуміння і полегшити подальшу роботу з ним.

Проблема Є локальна змінна, яка використовується для зберігання різноманітних значень всередині методу (не рахуючи змінних циклів). Приклад 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 і так далі. Цей рефакторинг допомагає надалі виділити ділянки коду, що повторюються, в окремі методи.

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

Анти-рефакторинг Вбудовування змінної

Схожі рефакторинги Відокремлення змінної Видалення привласнень параметрам

Допомагає іншим рефакторингам Відокремлення методу

Посилання Split Temporary Variable Розщеплення змінної Split Temporary Variable