В чистом коде дублирования не бывает, от него всегда можно избавиться, но, все зависит только от времени.
Есть ситуации, когда для избавления от дублирования нужно полностью перепроектировать проект или лепить костыли. Чаще всего происходит так:
- Приходит босс, говорит сделать задачу, сделать надо вчера
- Ты смотришь в код и видишь, что уже есть часть решения, нужно его использовать в другом месте, радуешься
- Пытаешься использовать, понимаешь, чтобы прокинуть этот код, нужно написать с десяток классов и переделать пол проекта, расстраиваешься, за день явно не сделать, сроки поджимают
- Один из 2-х вариантов, или пилишь костыль чтобы код таки был в одном месте, или тупо копируешь его))
- Готово
Такое бывает, чаще всего, с legacy кодом