ConstructiCat Logo
CodeBust.
Browse section ▾

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

Problem

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

Solution

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

##Example

Before
if (isSpecialDeal()) {
  total = price * 0.95;
  send();
}
else {
  total = price * 0.98;
  send();
}
After
if (isSpecialDeal()) {
  total = price * 0.95;
}
else {
  total = price * 0.98;
}
send();

##Why Refactor

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

##Benefits

  • Убивает дублирование кода.

##How to Refactor

  1. Если дублирующие участки находятся вначале веток оператора, вынесите их перед условным оператором.

  2. Если такой код выполняется в конце веток, поместите его после условного оператора.

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

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