Весняний РОЗПРОДАЖ

Розщеплювання змінної

Також відомий як: 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);
echo $temp;
$temp = $this->height * $this->width;
echo $temp;
Після
$perimeter = 2 * ($this->height + $this->width);
echo $perimeter;
$area = $this->height * $this->width;
echo $area;
До
temp = 2 * (height + width)
print(temp)
temp = height * width
print(temp)
Після
perimeter = 2 * (height + width)
print(perimeter)
area = height * width
print(area)
До
let temp = 2 * (height + width);
console.log(temp);
temp = height * width;
console.log(temp);
Після
const perimeter = 2 * (height + width);
console.log(perimeter);
const area = height * width;
console.log(area);

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

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

Переваги

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

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

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

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

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

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

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