Моё глубочайшее убеждение состит в том, что Web-программирование и объектная модель друг другу противопоказаны. Да, конечно, функционально тоже можно программировать плохо, но ООП и ООД дают слишком много дополнительных возможностей, чтобы испортить код, не предоставляя взамен совершенно никаких бонусов. (Почему при этом проекты у нас ОО - вопрос отдельный, стоит отдельного поста, но вряд ли этот пост когда-нибудь будет написан.)
Естественно, сейчас я в подавляющем меньшинстве, но так как у меня есть гражданская ответственность - в меру сил пытаюсь соотношение исправить. Любимый вопрос на собеседованиях: "А какой стиль Вы предпочитаете? Процедурный или объектный?". Все естественно начинают рассказывать про ОО (даже если не знают, чем private отличается от protected - ОО это же модно, а "с преподавателями надо всегда соглащаться"(c)), но вот дальше, после вопроса "А почему? Чем он лучше?" могут только мямлить. Если выжимать конкретику, то в 70% случаев оказывается, что объектное программирование позволяет проще сменить хранилище данных, дальше, естественно, следует "А часто ли Вам приходилось это делать в реальной жизни" и ответ "Ни разу". Может быть, после этого они и задумываются о чем-либо, по крайней мере, я чувствую, что сделал что-то полезное.
Вчера пациент, наконец, впервые вспомнил случай и он такой показательный, что не могу его не описать. Собеседуемому на одной из работ достался в наследство красивый, объектно-ориентированный код, который хранил все свои данные в одном XML-файле. Ну а он героически перевел его на mysql. Это примерно всё, что я могу сказать об ООП в вебе:
правильный, работающий ООП-проект, хранящий свою базу в одном XML-файле.
XML, я кстати, люблю примерно так же, как объекты.
February 16 2008, 12:36:31 UTC 4 years ago
February 16 2008, 12:55:17 UTC 4 years ago
2. Производительность. В вебе производительность до сих пор очень важна, при этом основные её потери не в бизнес-логике, а как раз в тех мелочах, которые ООП должен маскировать (и маскирует) от программиста.
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
Deleted comment
4 years ago
Deleted comment
4 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
February 16 2008, 12:44:01 UTC 4 years ago
И таки тебе в серьез интересно послушать ответ на этот вопрос?
А вот про дополнительные возможности испортить код, можно поподробнее?
February 16 2008, 12:57:16 UTC 4 years ago
2. Попробуй :-)
3. http://gornal.livejournal.com/55794.htm
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
Deleted comment
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
3 years ago
3 years ago
February 16 2008, 15:03:37 UTC 4 years ago
February 16 2008, 15:20:49 UTC 4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
February 16 2008, 17:16:10 UTC 4 years ago
Ну и главный принцип тот же - в вебе нет состояний и они ближе функциональному языку чем ОО. Ну и я видел какой кошмар городят в вебе фанаты ОО.
Буду в понедельник рассказывать что ОО это недостаток языка :)
February 16 2008, 23:22:11 UTC 4 years ago
Я вам потом покажу кусочек phpBB чтоб вам хорошо стало :-)
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
Anonymous
February 16 2008, 18:27:04 UTC 4 years ago
February 16 2008, 21:06:00 UTC 4 years ago
Anonymous
4 years ago
4 years ago
4 years ago
Anonymous
4 years ago
4 years ago
Anonymous
4 years ago
Anonymous
4 years ago
February 16 2008, 19:03:39 UTC 4 years ago
но разве обьектно ориентированное программирование и функциональное программирование ортогональны?
там вверху про джанго было, он, по-моему, написан, сравнительно, в функциональном стиле. бывает явно похуже.
February 16 2008, 19:06:06 UTC 4 years ago
А вообще - всему свое место. Драйвер базы, например, должен быть объектным. Хранилище данных не то, что менял, но добавлял альтернативную базу.
February 16 2008, 19:22:51 UTC 4 years ago
однако стоит понимать, что постоянные изменения - это на крест, такого нет больше наверное почти ни в одной отрасли, и при очень кривой замороченной логике (не только потому, что эта логика постоянно меняется, а ещё и потому что придумывают её в терминах "развести на какое-то действие") - так вот эти изменения имхо легче вносить в объектный код. иначе это превращается в такую кашу, мама моя. а так тот же простенький mvc решает вопрос - ну нужна тебе очень нетривиальная логика в конкретном случае - ну унаследовал да переписал пару методов, и всё. ты можешь решить эту проблему и при процедурном подходе, но это сделать уже посложнее.
а вот где ооп сосет отчаянно - так это при работе с бд. человек не врубающийся в реляционную модель и не врубающийся как же именно работает его детище если б базой был он сам - существо наиопаснейшее. тем не менее эта проблема решается организационно.
February 16 2008, 23:10:26 UTC 4 years ago
Или вы считаете что человек пишущий в ООП стиле по определению "не врубающийся в реляционную модель"?
Я знаю о недостатках ORM в смысле оптимизации запросов и подобного, но это извините личное дело каждого использовать или нет.
Если работа с базой редкая, что часто возможно в тойже Java за счет хранения состояния в памяти то можно и пожертвовать скоростью работы в этом месте ради скорости разработки всего проекта.
Если ее много и она важна, значит пишем фабрику порождающую группу обьектов из 1 грамотно составленого запроса. А иногда можем и сериализовать обьект.
Все в руках програмиста.
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
February 17 2008, 00:30:20 UTC 4 years ago
Мои любимые грабли. :-)
February 17 2008, 15:37:48 UTC 4 years ago
February 18 2008, 07:00:07 UTC 4 years ago
February 18 2008, 16:16:26 UTC 4 years ago
Если же проект не особо нагружен и не требует большой аккуратности в работе с хранилищем, но требует постоянных значительных переделок в логике проекта - ООП всеж рулит, буть он на перле или на настоящем ОО языке.
Deleted comment
4 years ago
Anonymous
4 years ago
4 years ago
Anonymous
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
February 19 2008, 10:19:22 UTC 4 years ago
Deleted comment
4 years ago
Deleted comment
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
Deleted comment
4 years ago
February 20 2008, 09:02:28 UTC 4 years ago
Я готов разлюбить объекты, если Вы мне объясните, как в таком случае можно обойтись без паттерна состояние?
Класс State
функции
doPiece(somePiece)
doFinal(reference to someText)
PS: Да, код должен быть удобным, надежным (ау инкапсуляция) и сопровождаемым, структуры с all open members, просьба, не предлагать.
February 20 2008, 09:14:29 UTC 4 years ago
while(<>) {
$h=add($h,$_);
}
final($h);
?
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
February 27 2008, 21:25:04 UTC 4 years ago
February 28 2008, 08:32:02 UTC 4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
Anonymous
3 years ago
February 28 2008, 11:49:14 UTC 4 years ago
Ага. Шесть раз.
Вы еще корпорации Sun расскажите, про то что их их технлогии JSP и Servlet оказывается полная фигня.Вообще-то зависит от того как у вас организовано вебприложение и какой оно сложности. Если приложение работает как в CGI (т.е. отработало и выключилось и нет никаких промежуточных состояний) и сложность ПО небольшая, то лучше будет процедурный метод. В случае если у вас есть таки и промежуточные состояния и сложно ПО высокая, то лучше использовать ООП.
March 4 2008, 10:05:45 UTC 4 years ago
Re: Ага. Шесть раз.
Вы еще корпорации Sun расскажите, про то что их их технлогии JSP и Servlet оказывается полная фигня.А что, разве частичная?
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
Anonymous
April 15 2008, 13:19:59 UTC 4 years ago
Бред полный написан.
Ты посмотри сначала на такие системы как Catalyst & DBIx::Class, не с высока, не пролистав, а реально заюзав и влившись в атмосферу. Он они не "без состояний", там еще как есть состояния. Тогда таких совершенно дурацких постов не будет.Anonymous
May 1 2009, 07:39:28 UTC 3 years ago
Need to download XRumer 5.0 for free!
Hi, my friends!! I want to download program XRUMER 5.07 Palladium free. Any download link?I'm so need this magic program! It's can break captchas automatically! Activate accounts via email automatically too! Absolutely great software! Help me!
And did you hear news - price for XRumer 5.0 Palladium will grow up to $540 after 15 may 2009... And XRumer 2.9 and 3.0 - too old versions, it's cant break modern catpchas and cant break modern anti-bot protections. But XRumer 5.0 Palladium CAN!!!!
So help me for download this great soft for free! Thanks!