Да, заголовок - тотальный кликбейт, но сформулировать его именно так меня заставили обстоятельства.
ВНИМАНИЕ!!! Почитав комментарии я увидел, что путают тёплое с мягким. Вопрос - есть ли математическое или иное другое ОБЪЕКТИВНОЕ сравнение технологий. Грубо говоря код без использования SOLID и код с использованием SOLID отличаются ['параметр':'значение']. Интересует именно ОБЪЕКТИВНОЕ сравнение т.е. то, что можно как-то посчитать или хотя бы булево обработать.
Некоторое время назад мы с одним из коллег обсуждали архитектуры ПО и в процессе обсуждения появился простой, но крайне принципиальный вопрос. Поскольку вопрос был простым мы думали, что найдём ответ за пару минут, но мы с огромным удивлением за несколько дней не смогли найти ответ.
Поскольку вопрос очень даже холиварный, попрошу в комментариях срач не разводить, а высказываться по теме.
Итак, небольшая преамбула.
Все знают, что есть математические оценки сложности алгоритмов (обычно их записывают как O(N)), есть оценки потребляемых ими ресурсов (память, процессор). То есть сравнить два алгоритма можно полностью объективно - грубо сделав таблицу сложность, память, процессор и выбрать то, что нужно.
Но вот насчёт ООП, SOLID, DRY, Clean Code, архитектуры микросервисов и далее по списку объективных оценок найти не удалось.
Из личного 16 летнего опыта разработки могу сказать, что практика выработала ко всем указанным выше элементам отношение крайне неоднозначное. Пара примеров:
Есть программа написанная в классическом процедурном стиле. По ряду причин программа устарела и было принято решение сделать версию 2.0 но уже в ООП. Разница в коде была огромная... И самая главная в том, что ООП версия была больше по объёму, сложнее, работала медленней, с кодом можно работать только из грамотно настроенной IDE. Из плюсов... Если бы это был С++, то плюсы были бы только в нём.
С одной стороны безусловно, что ООП, SOLID, Clean Code делают код визуально красивым, понятным и т.п. Но с другой стороны работать с этим кодом становится гораздо тяжелее. Есть таск, ты за 2 минуты в голове накидал код как это сделать... И 2 дня ищешь куда эти 5-10 строк кода воткнуть, чтобы ничего другого не сломалось. Потому что DRY и кто-то где-то что-то переиспользует. И это что-то где-то можно найти только инструментами IDE.
Второй пример - Clean Arhitecture (о звере можно почитать на Хабре), но принципиально от MVC, MVVM не отличается. Есть приложение которое реализует простой и понятный CRUD-интерфейс к некоторой, но довольно большой (несколько сот таблиц) базе данных. У меня в кейсах подобный проект был, там Flask роутинг и 4 функции всё-в-одном для реализации соответственно добавления, чтения, обновления и удаления записи. При проблеме смотришь в роутинг, идёшь в функцию и правишь. Применение CA сделало из этого простого и понятного интерфейса монстра в котором днями блуждаешь в поисках проблемного места.
Так вот собственно вопрос для обсуждения - есть ли объективные оценки эффективности ООП, SOLID, Clean Code, Clean Arhitecture, DRY, микросервисов и т.п. Или это обычный гуманитарный популизм/тренды и вообще не более чем удовлетворение ЧСВ?
Вопрос имеет так же и второй подтекст - в профильной литературе и постах на эти темы всегда говориться о том, что данные инструменты упрощают разработку, снижают время внесения изменений, уменьшают количество ошибок и вообще няшки. В реальной практике почему-то оказывается, что да, непосредственно внесение изменения занимает очень мало времени, но вот поиск места куда можно безопасно внести это это изменение и ничего не сломать может занимать больше времени, чем переписать функционал с нуля в отдельную самодостаточную функцию.
P.S. Давным давно в далекой галактике видел один узко специализированный продукт в котором почти всё было сделано как анти-паттерны к ООП, SOLID, Clean Code, Clean Arhitecture. И работа с ним была в моей практике наиболее быстрой и комфортной работой с кодом.