Я работаю в большой компании над старым и большим проектом.
Код - миллионы строк. Почти весь код который я вижу - макароны ;)
Вместо того чтобы код управлялся данными, данные жестко вшиваются в код и он начинает состоять из сегментов которые отличаются друг от друга парой констант (типа повторения одного и того же запроса к БД для разных таблиц).
Часто есть несколько функций которые выполняют почти одно и тоже и которые можно было бы объединить в одну, более того, из их названий различия никак не понятны.
В нем нет никакой архитектуры которая бы разбивала его на независимые части, хотя это возможно и вероятно упростило бы разработку.
Решения выбираются в основном по кретирию максимальной понятности разработчикам, но так как большинство разработчиков не знакомы (мало знакомы) с bash, системными вызовами unix, основами многопоточного программирования (методами синхронизации), то...
Некоторые «системные» вещи которые десятилетиями делаются в unix проверенным способом велосипедятся не лучшим образом.
И это не все проблемы кода на самом деле.
Но это все ерунда по сравнению со стремлением разработчиков делать все одной большой функцией. Т.е например скрипт на 6-20 сотен строк с большущей вероятностью будет одной большой функцией. Либо будет содержать парочку, но с такими именами что от них можно только запутаться. Единственное что побуждает вынести часть кода в отдельную функцию - это то, что код будет вызываться откуда-то еще, да и то не всегда.
Но тем не менее, все работает и работает быстро, проект можно назвать high load, здесь используются разные сложные мат. алгоритмы (это я к тому что уровень разработчиков очень даже хороший, с точки зрения математики.. ).
Неужели все проекты со временем становятся такими?