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

Дублирование кода.

Два фрагмента кода выглядят почти одинаковыми.

##Признаки и симптомы

Два фрагмента кода выглядят почти одинаковыми.

void printUser(User u) {
  System.out.println(u.name + " <" + u.email + ">");
}
void printAdmin(Admin a) {
  System.out.println(a.name + " <" + a.email + ">");
}

##Причины проблемы

В большинстве случаев дублирование возникает тогда, когда в проекте работает несколько человек, причём над разными его частями. Они работают над похожими задачами, но не знают, что коллега уже написал похожий код, который можно использовать вместо написания своего.

Встречается и косвенное дублирование, когда конкретные участки кода отличаются внешне, хотя и выполняют одну и ту же задачу. Такое дублирование бывает довольно сложно обнаружить и исправить.

В отдельных случаях дублирование создаётся намеренно. Зачастую, в спешке, когда поджимают сроки сдачи проекта. Начинающий программист видит в уже написанном коде фрагмент, выглядящий «почти так, как нужно» и не может устоять перед соблазном просто скопировать код куда-то в другое место (и так десяток раз).

А в самых запущенных случаях программист просто слишком ленив, чтобы избавить код от дублирования.

##Лечение

##Результат

  • Объединение дублирующего кода позволяет улучшить структуру кода и уменьшить его объём.

  • Это, в свою очередь, ведёт к упрощению и удешевлению поддержки кода в будущем.