Неумелый копипаст не единственный источник проблем. «Велосипедисты» со стажем тоже не дадут заскучать. Причем в некоторых случаях создателей велосипедов по-человечески можно понять. Потому что, когда ради небольшой функции тебе предлагают воткнуть в свою программу жупел нереальных размеров и нереальной же корявости. Тут по-неволе начнешь задумываться, может действительно проще... того... ну вы поняли.
Решений два — одно простое, другое правильное.
Простое решение заключается в том, что до поры до времени все усиленно делают вид будто бы ничего криминального не происходит. Длится это ровно до того момента, когда программа в результате безудержного копипаста разрастается в размерах и тупо начинает разваливаться под собственной тяжестью. Сам был свидетелем того как софтинка, являющаяся по сути почтовым сервером, разрослась до размеров незатейливой операционной системы. При этом постоянно глючила, тормозила и несмотря на размеры функциональности имела «шиш да маленько».
Как только проблема плохого code reuse становится очевидна даже топ-менеджерам, сразу начинаются поиски решений. Он традиционно ведётся в ключе «чтобы такого сделать, чтобы ничего не делать, но всё само собой разрешилось». У особо пытливых граждан даже появляется иллюзия, что такая изначально порочная цель достижима. Достигать её предлагается различными модными шаманствами. Типа тимбилдинга, частыми совещаниями и вебдванольными тулзами вроде вики или прочего. Всё это имеет кратковременный эффект, который как правило заключается в том что несколько недоумков сцепятся во время кофедрейка, выясняя чья реализация вектора лучше. Потом всё возвращается на круги своя, пока высокое начальство не начнёт опять кровь сворачивать.
Причина подобного развития событий для многих тайна ибо не каждому дано понять, что code reuse в частности и качество кода (что бы под этим не понимали) в общем является такой же фичей проекта как и эргономичный интерфейс или гламурные иконки (я страсть как люблю гламурные иконки поэтому пихаю их везде где надо и где не надо)) ). А следовательно на реализацию этой фичи требуются ресурсы. И чем программисты бестолковее тем больше ресурсов надо. Простого решения не существует ещё и потому, что высокое качество кода требует постоянной работы в этом направлении. Стоит забить на это хоть на чуть-чуть как всё снова приходит в упадок и нужно начинать сначала.