Також відомий як Consolidate Duplicate Conditional Fragments

Рефакторинг Об'єднання фрагментів, що дублюються, в умовних операторах

Проблема

Однаковий фрагмент коду знаходиться в усіх гілках умовного оператора.

Рішення

Винесіть його за рамки оператора.

До
if (isSpecialDeal()) {
  total = price * 0.95;
  send();
}
else {
  total = price * 0.98;
  send();
}
Після
if (isSpecialDeal()) {
  total = price * 0.95;
}
else {
  total = price * 0.98;
}
send();
До
if (IsSpecialDeal()) 
{
  total = price * 0.95;
  Send();
}
else 
{
  total = price * 0.98;
  Send();
}
Після
if (IsSpecialDeal())
{
  total = price * 0.95;
}
else
{
  total = price * 0.98;
}
Send();
До
if (isSpecialDeal()) {
  $total = $price * 0.95;
  send();
}
else {
  $total = $price * 0.98;
  send();
}
Після
if (isSpecialDeal())
  $total = $price * 0.95;
else
  $total = $price * 0.98;
send();
До
if isSpecialDeal():
    total = price * 0.95
    send()
else:
    total = price * 0.98
    send()
Після
if isSpecialDeal():
    total = price * 0.95
else:
    total = price * 0.98
send()

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

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

Переваги

  • Вбиває дублювання коду.

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

  1. Якщо дублюючі ділянки знаходяться на початку гілок оператора, винесіть їх перед умовним оператором.

  2. Якщо такий код виконується в кінці гілок, помістить його після умовного оператора.

  3. Якщо дублюючий код розташован випадковим чином усередині гілок, вам треба спробувати пересунути його в початок або в кінець гілки, залежно від того, чи міняє він результат подальшого коду.

  4. Дублюючий фрагмент коду більший за один рядок можна спробувати відокремити в новий метод, якщо в цьому є сенс.

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

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

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

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