Существует ли антипаттерн, описывающий исторически сложившуюся программную систему, в которой несколько разработчиков просто добавили новые функции в систему, но никто не следил за общей архитектурой, и никогда не проводился рефакторинг?
Я думаю, что это происходит, когда руководство / клиент постоянно запрашивает новую функцию, и никто никогда не рефакторирует что-либо, а только добавляет то, что другие разработчики уже делали раньше.
Причиной также может быть то, что разработчик просто перегружен программной системой и не совсем понимает, как она работает в настоящее время, а затем просто добавляет / склеивает свой код в самом конце (вместо рефакторинга кода и его изменения).
Так что со временем обслуживание системы становится все сложнее и сложнее.
(Интересно, есть ли картинки для такого рода антишаблонов, чтобы сделать это более понятным никому не программистам - как автомобиль, который был построен, просто добавляя все больше и больше функций, не думая об общем дизайне. Как будто у кого-то есть необходимость буксировать трейлеры едут задом наперед, а затем инженер просто приваривает фаркоп к передней части автомобиля. Работа выполнена. Но теперь капот больше не открывается.)
Ответы:
Вы ссылаетесь на технический долг .
Мы все накапливаем техническую задолженность по продуктам, которые мы разрабатываем с течением времени; рефакторинг является одним из самых распространенных и эффективных способов сокращения этого технического долга, хотя многие компании никогда не погашают свой технический долг. Эти компании, как правило, находят свое программное обеспечение крайне нестабильным в течение многих лет, и технический долг становится настолько отвратительным, что вы не можете постепенно его погасить, потому что для его погашения потребуется слишком много времени.
Технический долг имеет термин, потому что он следует за тем же поведением долга. Вы получаете долг, и до тех пор, пока вы продолжаете тратить (создавать функции) и не погашать этот долг, он будет только расти. Очень похоже на долг, когда он становится слишком большим, вы попадаете в точки, где вы можете полностью избавиться от него с помощью опасных задач, таких как полное переписывание. Также как реальный долг, поскольку он накапливается до определенного момента, он ограничивает вашу способность тратить (создавать функции) в целом.
Просто, чтобы добавить в термин еще один термин, сплоченность означает, насколько хорошо система, микро на уровне линии или макро на уровне системы, сочетаются друг с другом. У очень связной системы все ее части будут очень хорошо совмещаться и выглядеть так, как будто один инженер написал все это. Ваша ссылка выше на кого-то, кто просто приклеит свой код к концу, нарушит единство этой системы.
Управление техническим долгом
Существует много способов управления техническим долгом, хотя, как и в случае реального долга, лучшим подходом является частое его погашение. К сожалению, как и в случае с реальными долгами, иногда целесообразнее накапливать больше за короткий период, когда, например, время выхода на рынок функции может удвоить или утроить ваш доход. Сложная задача - взвесить эти конкурирующие приоритеты, а также определить, когда рентабельность инвестиций в долг не стоит того или иного за данную функцию.
Так что иногда стоит накопить долг за короткий период, но это происходит редко, и, как и в случае с любым долгом, чем короче период, тем лучше. Таким образом, в конечном итоге (желательно быстро ) после накопления технического долга, вы должны его погасить, это общие подходы:
источник
Ваше описание подходит к Большому мячу грязи Фута и Йодера :
источник