Також відомий як Split Temporary Variable

Рефакторинг Розщеплювання змінної

Проблема

У вас є локальна змінна, яка використовується для зберігання різноманітних значень всередині методу (не рахуючи змінних циклів).

Рішення

Використайте різні змінні для різних значень. Кожна змінна повинна відповідати тільки за одну певну річ.
До
double temp = 2 * (height + width);
System.out.println(temp);
temp = height * width;
System.out.println(temp);
Після
final double perimeter = 2 * (height + width);
System.out.println(perimeter);
final double area = height * width;
System.out.println(area);
До
double temp = 2 * (height + width);
Console.WriteLine(temp);
temp = height * width;
Console.WriteLine(temp);
Після
readonly double perimeter = 2 * (height + width);
Console.WriteLine(perimeter);
readonly double area = height * width;
Console.WriteLine(area);
До
$temp = 2 * ($this->height + $this->width);
print($temp);
$temp = $this->height * $this->width;
print($temp);
Після
$perimeter = 2 * ($this->height + $this->width);
print($perimeter);
$area = $this->height * $this->width;
print($area);
До
temp = 2 * (height + width)
print(temp)
temp = height * width
print(temp)
Після
perimeter = 2 * (height + width)
print(perimeter);
area = height * width
print(area)

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

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

Переваги

  • Кожен елемент програми повинен відповідати тільки за одну річ. Це значно спрощує підтримку коду в майбутньому, оскільки ви можете спокійно змінити цей елемент, не побоюючись побічних ефектів.

  • Покращується читабельність коду. Якщо змінна створювалася дуже давно, та ще і в поспіху, вона могла дістати елементарну назву, яка не пояснює суті значення, що зберігається, наприклад, k, a2, value і так далі. У вас є шанс виправити ситуацію, призначивши новим змінним хороші назви, що відбивають суть значень, що зберігаються. Наприклад, customerTaxValue, cityUnemploymentRate, clientSalutationString і так далі

  • Цей рефакторинг допомагає надалі виділити ділянки коду, що повторюються, в окремі методи.

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

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

  2. Підставте її нову назву замість старого в місцях, де використовувалося це значення змінної.

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

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.