Решил создать отдельную ветку, чтобы последовавшее обсуждение, было более тематическое.имхо в вебе ООП вообще ни к селу ни к городу
Я бы еще добавил что ООП полезно при написании бизнес-логики для приложений. В том числе и веб-приложений. Имееются ввиду полноценные приложения, а не только те которые просто отображают содержимое БД.
Из своего опыта могу сказать, что единственное место, где уместно ООП - это при разработке ГУИ на десктопах (как вы изволили выразиться - при рисовании морд к БД).
А сторонники ооп используют его везде (где надо, а чаще, где не надо).
пхп был вполне самодостаточным языком, но потом, следуя моде, в него добавили ООП фичи, которые вообще не нужны для веб приложений, и самое смешное - их почти никто не использует
Изначально идея ООП была в том что объекты живут и обмениваются друг с другом событиями и сообщениями
В вебе ничего этого нет
HTTP-request и и в ответ - response,
Время жизни объекта - это время генерации HTML,
Нафик там ООП?
В том веб-проекте в котором я работал, как раз начальник и был ярым поклонником ООП.
Такого количества оберточного говнокода я больше нигде не видел,
Можно конечно говорить, что это от кривизны рук зависит, но имхо это именно ООП стимулирует раздутые библиотеки объектов и нечитаемый код.
Противников у ООП, ничуть не меньше чем сторонников. И рассматривать ООП как безоговорочную истину по меньшей мере наивно.
Собственно, врядли мы когда-ниубдь сойдемся во мнении, поскольку вы сторонник бизнес слоя на апп сервере, а я - базист, но потрепаться на форуме иногда полезно
Но хотя бы почитайте главу в книге Кайта, "developing succesful applications"
Помнится вы тоже рассказывали что на одном из ваших рабочих мест приложение тупо тормозило потому что данные не были проиндекисированы.
Вот на вашем примере можно сказать, какой бы ни был супернавороченный бизнес слой на апп сервере, приложение один фиг бы тормозило, пока вы в бд порядок не навели.
Итак, почему я за ООП в вебе.
1. Потому что современные веб-приложения обладают сложной поведенческой логикой и необходим инструмент моделирования сложной логики.
2. Потому что современные веб-приложения обладают сложной логикой отображения информации и опять таки, нужен инструмент моделирования сложной логики.
3. Потому что ООП код, является более тестируемым чем процедурный.
Большинство современных веб-приложений являются не только отображением информации, но и средой в которой пользователи работают. Хочу уточнить, что я веду речь именно про веб-приложения, а не про веб-сайты, пусть даже такие крупные веб-сайты как сайт BBC. Примерами же веб-приложений могут служить система управлениями проктами Daptiv, или например Сервис для проведения онлайн опросов и т.п. Уровень сложности такого рода систем может быть очень высок. Возможно он не сравним по сложности с телекоммуникационными биллинговыми системами, но все-же выходит за рамки рядового веб-сайта.
1. Потому что современные веб-приложения обладают сложной поведенческой логикой и необходим инструмент моделирования сложной логики.
Вот яркий примеры когда без ООП будет проблематично:
Перерасчет текущего плана проекта, после изменения параметров задачи. Между задачами существуют зависимости, ограничивающие время начала выполнения работ, и каждая задача требует загрузки разных ресурсов для своего выполнения.
2. Потому что современные веб-приложения обладают сложной логикой отображения информации и опять таки, нужен инструмент моделирования сложной логики.
Формирование графиков, на странице отчетов. Существует около 6-8 типов графиков, отображающих данные. Они все достаточно стандартны, Bar, Plot, SCatterPlot, таблицы и т.д. Любой график настраиваем и имеет свои параметры отображения, на одной странице пользователь может разместить любое количество графиков, В том числе и одинакового типа.
3. Потому что ООП код, является более тестируемым чем процедурный.
При написании кода в ООП стиле, я имею возможность тестировать не все приложение, а только его часть, это позволяет мне быть ближе к источнику ошибок, и уменьшает шанс того что я устраняю не ошибку, а побочный эффект от ошибки. Также ООП позволяет мне подменять подсистемы в приложении, и формировать таким образом постоянные ответы, которые позволяют добиться повторяемости тестов.
Кажется все