А можно и наоборот. Писать запутанный монолитный ООП код и не видеть, что он хуже понятной и эффективной процедурки.
Ровно тоже самое я могу сказать, что переход от ООП к мультипарадигме требует осознать то, что на уровне ООП далеко не сразу очевидно.
У ООП полно недостатков, не зря существует куча сформулированных антипаттернов. А еще больше несформулированных. Перефразируя Страуструпа можно вывести немного другой силлогизм:
Вот не всегда так, хотя польза типизации очевидна. Просто иногда за нее приходится слишком дорого платить. Ровно как и другие, на первый взгляд, "преимущества" ООП зачастую слишком дорого стоят. Взять хотя бы тот же порог вхождения, хотя я в него не верю.
Так что если:
1. Код перенасыщен паттернами
2. Абстракция возведена в абсолют
3. Полиморфизм применяется всегда, надо оно или нет, с оправданием "а вдруг!"
4. Архитектура простого проекта разрабатывается по принципам астронавтики
5. И вообще, когда ООП ради ООП
Твой код - дерьмо. Хоть ООП его назови, хоть горшком без ручки.
И наоборот. Если ты пишешь модульную систему на процедурке, либо на ФП, и код:
1. Хорошо структурирован
2. Лаконичен
3. Прозрачен
4. И вообще интуитивно понятен даже новичку
Твой код хорош. Что бы не говорили про него адепты.
Так что я за хороший и красивый код, а не за религиозный фанатизм с ООП вместо иконы. Ровно как и процедурка тоже совсем не религия, а инструмент.
Все доводы про сложность расширяемости и поддерживаемости - фикция и миф. Не стану акцентироваться, лень. Одно только скажу. Мой рабочий проект на 80% написан процедурно. Я недавно (года два назад) попробовал переписать отдельные модули на ООП, и бросил нафиг. Ибо это никому не надо. Он вполне расширяем и подерживаем и так. Ни у кого из новых программистов никогда не возникало серьезных вопросов по коду. Он просто очевиден. Может там местами нарушен DRY, но зато код не связан и никакой SOLID ему не нужен.
А проект это успешно работает и развивается уже около 10 лет. А если взять вообще законченный проект, который и расширять то не нужно, то все ваши доводы "за" полностью теряют смысл. Не нужно ничего расширять, проект закончен.
А если станет нужно, значит не так уж сложно его и отрефакторить. Особенно если проект написан мультипарадигмально. Там, где действительно тонкое место, там ООП. Там где не нужна избыточность - свои инструменты.
Еще раз повторю свое твердое убеждение.
ООП полезен только тогда, когда с проектом работает очень много людей. Это либо популярный опенсорс (чаще с претензией на популярность
![smile.gif](http://phpforum.su/html/emoticons/smile.gif)
), либо жутко кровавый интерпрайз.
В первом случае народ норовит соответствовать, как же, люди смотрят! Кто же "купит" процедурку
Во втором оправдано, однако и мелкие компании норовят туда же. Ибо плох тот сайт, который не хочет стать Гуглом)))
Подавляющее большинство проектов, хоть веб, хоть десктопных, в жестком ООП не нуждаются. Потому что ООП в том виде, как его трактуют ты и твои единомышленники, это ограничения. Все должно быть объектом. Вот хоть обкакайся, но за рамки объекта нини.
И кол в голове: Хорошо == хорошо; ООП == хорошо. Не ООП == плохо.
Вообще я заметил такую фишку. Тот, кто, как ты говоришь, перешагнул порог вхождения, начинают смотреть на неООП код с каким то снисхождением, мол вот я то добился!!! огого!! А это фи.
И способность к анализу кода исчезает напрочь. Все, что не вписывается в рамки, признается говнокодом. И люди готовы сидеть ночами, дабы применить там какой-то паттерн, который в большинстве случаев нафиг не нужен. Лишь бы кто-нибудь не уличил его в том, что он пишет не ООП. Смешно, право.
Вот если учить наоборот, сначала объекты показать, пару архитектурных приемов, основные паттерны для затравки, а в процессе показывать нативные возможности языка, такого пафоса вряд ли увидишь. Потому что тогда анализ кода останется на месте, не забьется фанатизмом.
Код или хорош или нет. Все. Точка. Никакие другие характеристики ему вообще не нужны.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.