Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Объединение дублирующихся фрагментов в условных операторах.

Проблема

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

Решение

Вынесите его за рамки оператора.

##Пример

До
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. Дублирующий фрагмент кода более одной строки можно попытаться извлечь в новый метод, если в этом есть смысл.