[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП vs СФП
UnWind
Здравствуйте Дамы и Господа !
Возник вопрос, так как на работе пошли конфликты о том, что лучше.
Небольшая предыстория:
Цитата

PHP как язык программирования, создавался изначально ни как Объектно Ориентированный, Структурно Функциональный

Большинство говорит, что изначально, не зависимо от того, что в php ввели классы, лучше программировать в СФП.
Не может ли кто то помочь разобраться, что в действительности лучше ?
Но разобраться не так, что каждый скажет то, что ему нравится, на основе фактов обосновать свой ответ.
Заранее благодарю за помощь.

P.S.:> То, что ООП лучше структурно функционального, это и так понятно, но по утверждениям большинства - это утверждение относится к примеру языку Java, по этому попрошу давать ответы только касательно PHP.



Спустя 2 минуты, 43 секунды (27.04.2011 - 20:44) waldicom написал(а):
Не плохо было бы давать темам нормальные названия, не первый день на форуме.
Но главный вопрос, это конечно же что такое "СФП"?

Спустя 1 минута, 28 секунд (27.04.2011 - 20:46) UnWind написал(а):
waldicom
СФП - структурно функциональное программирование.

P.S.:> А насчет названия темы, извините за такую некомпитентность, измените пожалуйста на "ООП vs СФП"

Спустя 2 минуты, 18 секунд (27.04.2011 - 20:48) waldicom написал(а):
Цитата (UnWind @ 27.04.2011 - 18:41)
То, что ООП лучше структурно функционального, это и так понятно

Ща начнется война, если у воинствующих сторон остались силы, или что важнее, желание, спорить на эту тему.

Спустя 2 минуты (27.04.2011 - 20:50) UnWind написал(а):
waldicom
Хм. Ну надеюсь желание осталось, просто в отличии от предыдущих споров - я бы хотел, что бы народ подкрепил свои утверждения фактами, на чем и построется более правильный вывод.

Спустя 1 минута, 57 секунд (27.04.2011 - 20:52) DedMorozzz написал(а):
читай http://phpforum.ru/index.php?showtopic=27332 20 листов фактов

Спустя 10 минут, 1 секунда (27.04.2011 - 21:02) UnWind написал(а):
DedMorozzz
Благодарю, солидарен с Twin и сомнения про процедурный код развенчались.
Спасибо большое за ссылку. smile.gif
Впредь буду внимательней.

Спустя 19 минут, 29 секунд (27.04.2011 - 21:21) DedMorozzz написал(а):
Заметь, там таки не 1 точка зрения wink.gif

Спустя 9 минут, 21 секунда (27.04.2011 - 21:31) UnWind написал(а):
DedMorozzz
Заметил, у Twin самая правильная на мой взгляд.
Сам изучаю Java - там ООП и в сравнении с ООП в PHP, PHP это вообще не нужно.
И то, что все остальные мнения в основном мативируют "глобальными проектами", это тоже не правильно, потомучто "глобальные проекты" все были написанны далеко не на PHP.
Если в PHP так хорошо использовать ООП, то тогда почему все пишут на C или Java ?
Можно сказать, что они "дураки", но взглянув на Google - дураком не назовешь.
К тому же такое мнение у меня было изначальным, что ООП - это не для PHP, больших проектов на PHP не напишешь, а для маленьких - это глупо.
Взять ту же CMS Joomla - вроде всё хорошо, но когда сел её модули редактировать - я чуть со психу этого кривого кода, монитор с компом в прихватку в окно не выбросил.
После чего, вернул клиенту деньги и больше никогда не соглашался на работу с скриптами написанными в стиле PHP.
Переделать в процедурку - запросто, но сидеть и разбираться + дорабатывать, уж лучше к кому нибудь другому, только не ко мне.

P.S.:> К тому же если бы хоть один из мотиваторов при употреблении словосочетаний "учавствовал в разработке глобальных проектов", упоминал бы, что они написанны на других языках и далеко не на php, то нет же - на примере проектов Java и C, утверждать, что PHP - крут в ООП и я могу.

Спустя 1 минута, 1 секунда (27.04.2011 - 21:32) Basili4 написал(а):
Холиварить у нас народ любит. Вот как сойдутся twin с linker -ом в честной схватке мне даже попкорн ненужен внимаю каждому слову. Тас что не слово то правда. Причем у обоих. Красота.

Спустя 42 секунды (27.04.2011 - 21:32) Basili4 написал(а):
UnWind
Джумла не образец.

Спустя 2 минуты, 19 секунд (27.04.2011 - 21:35) UnWind написал(а):
Basili4
Да можно в пример взять битрикс и много других подобных проектов.
Так же даже коды "крутых" кодеров, как сядешь и застрянешь на 3 дня только в разбирательстве где у него и что хранится.

Спустя 9 минут, 38 секунд (27.04.2011 - 21:44) Basili4 написал(а):
UnWind
Зато сколько удобств. Не по мне ООП даже в пыхе это хорошо. Плохо что в пыхе не очень ООП. Бесит отсутствие уточнения типа при возвращении значений у методов. Иногда null выскакивает и ищешь его потом.

Спустя 3 минуты, 40 секунд (27.04.2011 - 21:48) UnWind написал(а):
Basili4
Хм. Ну без обид - для кого это удобства, для кого лишний геморой...
Лично мое мнение, ООП в PHP было лишним, структурно функционального программирования в полне хватает.
А наследования и так далее, это уже лишнее.
Вот действительно, я вот просто не представляю Java без ООП.
Это надо быть вообще кем, что бы на Java в процедурках писать (Ну я знаю кем нужно быть, Рома у нас рядом со мной сидит - на Java в процедурках пишет).
Но в PHP ООП нужно так же, как оно в Java Роме нужно.
В общем, не будте Ромой. wink.gif

Спустя 52 секунды (27.04.2011 - 21:49) waldicom написал(а):
Цитата (UnWind @ 27.04.2011 - 19:31)
больших проектов на PHP не напишешь

facebook и vkontakte за большие проекты пойдут?

Спустя 2 минуты, 16 секунд (27.04.2011 - 21:51) UnWind написал(а):
waldicom
Нет, не пойдут.
Facebook причем если мне память не изменяет, всю обработку использует при помощи CGI окружения, т.е. C/C++.
А вот vkontakte никогда не сидел, терпеть этот сайт не могу - по этому ничего говорить не буду.

P.S.:> К тому же там оперировали далеко не facebook и контактом, а google например. Хотя скажу одно - я обожаю google, всю их продукцию, видил их офис и скажу, что вконтакт и facebook - просто маленькая капля в большом океане.

Спустя 4 минуты, 26 секунд (27.04.2011 - 21:56) UnWind написал(а):
В общем - я тоже могу написать на php пару страниц, взять java и в ней выполнять "тяжелые" операции, но это будет не заслуга PHP в стиле ООП.

Спустя 50 секунд (27.04.2011 - 21:56) Basili4 написал(а):
UnWind
Дело нев личном отношении а количестве пользователей. Проект большой и работает. Я так считаю что и на пыхе можно писать большие проекты но только зачем??

Но к сабжу это не относится.
По сабжу скажу хорошо спроектированный класс это много лучше модуля с функциями.
Вот беда что на пыхе пишут так что мурашки по коже бегут на Яве так не напишешь сам язык не даст. а на пыхе все пройдет.

Спустя 1 минута, 32 секунды (27.04.2011 - 21:58) DedMorozzz написал(а):
В том "споре" было мнение Твина и остальных, теперь гляжу мнение твина, тебя и остальных =)
Цитата
facebook - просто маленькая капля в большом океане.
2й сайт по посещаемости в мире
Самая высокая ЗП у программистов ФейсБука....
ммм....налей мне пол стаканчика таких "капелек"

Спустя 39 секунд (27.04.2011 - 21:59) UnWind написал(а):
Цитата
UnWind
Дело нев личном отношении а количестве пользователей. Проект большой и работает. Я так считаю что и на пыхе можно писать большие проекты но только зачем??

Я говорил не про личное отношение, а только лишь про то, что я не знаком с этим ресурсом.
К тому же, всё равно уверен, что все "тяжелые" операции даже там, выполняются на java или C более чем на 100%.
Пусть не отдельным скриптом как самостоятельным WEB приложением, а просто обращением.

Спустя 2 минуты, 16 секунд (27.04.2011 - 22:01) UnWind написал(а):
DedMorozzz
Насчет facebook посещаемости и их зп, то скажу одно - это социальная сеть, там должна быть такая посещаемость.
Но в сравнении с google - facebook проиграет, если сравнивать его не как социальную сеть с поисковиком, а если сравнивать как они написанны и кто и что написал.

Хм, как я уже и говорил по поводу facebook - там не всё реализованно на PHP и значимость PHP с его ООП, там минимальная.
Если было бы всё так, как ты говоришь и такие большие проекты делали бы только на PHP, по мойму у нас бы как минимум 80% территории мира занимали бы сервера Facebook да google.

Спустя 3 минуты, 53 секунды (27.04.2011 - 22:05) twin написал(а):
Я вот, разбирая конкурсные работы, заметил еще одну особенность.

Почему то предпочтения многих, начинающих особенно, но и уже вполне маститых программистов, склоняются не в сторону рациональности, а в сторону "крутизны". Чем сложнее и навароченнее код, тем кажется, что маститее программист. И потому в конкурсных работах часто основное внимание уделялось совсем не основному. А именно защите от дурака, красивым и сложным интерфейсам, а не самому алгоритму и не юзабильности скрипта.

Потому что это скучно, гораздо веселее наделать фишек на jQuery,

Как же - смог написать такую плюху, что никто разобрать не может. Якрууут!!!
Почему то напрашивается старая фраза "детская болезнь левизны в коммунизме".

И вот ООП в PHP придумано ни для какого удобства. А именно такими разработчиками (дада, не нужно всех разрабов PHP на божничку ставить, они такие же люди). Им просто показалось недостаточно круто использовать императивные прелести языка (а их вполне достаточно), так нужно обязательно наворотить ООП.

Ну и естественно тут же появляется куча апологетов с неубедительными, а порой смешными аргументами.
Все до одного они больны этой "левизной". Они склонны усложнять то, что на самом деле просто до безумия.

Потому что не понимают. Простой и эфективный код намного красивее, чем куча облепленных эксепшенами интерфейсами и прочими прелестями веревки наследников.

Я понимаю, когда смотришь на панель управления самолетом - захватывает дух. Красота в сложности. Но PHP не самолет. Это скорее велосипед. Ну мотоцикл максимум. Смешно же, когда на него нвешивают 324 фары, 521 катафот и антикрыло. Круто, но смешно.


Спустя 1 минута, 41 секунда (27.04.2011 - 22:06) kirik написал(а):
Цитата (UnWind @ 27.04.2011 - 14:51)
Facebook причем если мне память не изменяет, всю обработку использует при помощи CGI окружения, т.е. C/C++.
Цитата (UnWind @ 27.04.2011 - 14:31)
После чего, вернул клиенту деньги и больше никогда не соглашался на работу с скриптами написанными в стиле PHP.
Переделать в процедурку - запросто, но сидеть и разбираться + дорабатывать, уж лучше к кому нибудь другому, только не ко мне.

Я не стал влезать в дискуссию twin'а и linker'а по этому поводу, но тут скажу - не имеет значения в чем разбираться в процедурке или в ооп. Ты всё равно будешь сидеть и анализировать код (если конечно доков нет), как бы он написан небыл. Однако в случае ООП есть четкая структура кода, разрешение зависимостей, и ещё много всяких плюшек, которых нет в процедурке (но которые при желании конечно можно накостылить).
Ещё, естественно, нужно четко понимать что есть ООП, а что есть "возможность написать класс", и я не совсем пойму против чего UnWind, а?

Спустя 3 минуты, 48 секунд (27.04.2011 - 22:10) UnWind написал(а):
kirik
Против того, что бы лепить классы туда, где всё можно сделать проще. Что бы потом в этой лепизне не разбирались пол года, а всё из-за того, что какой то кусок дибила посчитал, что класс на классе с кучей наследований - это круто, и если это круто - надо в каждую строчку по классу влепить.

Так же против того, что из-за этой тупизны, люди заблуждаются в своих желаниях и потребностях. И когда приходишь на работу, и объясняешь шефу, что классами не нужно всё делать, он тебе говорит что в Joomla всё на классах и нужно делать так же. (Ну ситуация с шефом конечно не много другая, ему читать вредно)

А при разборе в процедурке или классах, легче в процедурке - потому, что не нужно открывать лишний раз кучу файлов с кучами инклудов, всё в одном - просто и понятно.

Каждый второй так делает, как только видит в резюме или еще где то, что обязательно знание ООП. Его вводят в заблуждение того, что ООП это круто и все делается только на нем, а после того как выучит ООП, начинается вот то, что я описал выше.

Спустя 6 минут, 59 секунд (27.04.2011 - 22:17) Basili4 написал(а):
Я конечно много го не знаю но я не понимаю как например процедурками реализовать композицимю. На вопрос зачем она нужна могу рсазу привестьи простой пример пример не мой гдето прочитанный. Значится так.

Пишем код который отрабатывает какие -то действия с пользователем регистрация, вход, выход. Все бы хорошо но требуется расширить функционал например отправкой сообщений от пользователя. лезем в код правим. все хорошо далее нам еще треба какое - то действие. опять лезем в код правим. Потом возникает потребность в другом проекте использовать нах код только без свистело а просто регистрацию, вход, выход. И что получается либо надо лезть в код и бить дополнительные функции в нем либо оставлять как есть т.е. еще кучу мертвого кода.

В случае с ООП я сделал бы интерфейс модулей и фабрику и все
плюшки реализовывал как реализацию интерфейса. Нужны плюшки подключаем не нужны отключаем

Все довольны все хорошо.


Спустя 5 минут, 5 секунд (27.04.2011 - 22:22) UnWind написал(а):
Basili4
Дык как уже и говорил Twin в своей теме, с чем я полностью согласен.
Редкий случай - когда какой то интузиаст слепит нормальный класс во время скажем заказа.
Обыденность - налепить классов, которые работают в рамках одного проекта, а спрашивается "зачем?" и можно ли после этого, это назвать ООП ?
Если этим никто не пользуется, зачем это нужно ?
Зачем лепить в теле программы 1001 инклуд, и 1001 класс, 10000000 и фиг его знает сколько наследований, когда всё элементарно просто делается в процедурке, быстрее и читабельней ?
А если проект такой большой и сложный, ну и используй Java, ты же вилкой суп не ешь.
Ты же операционную систему на PHP писать не будешь или на Java ?
Нет - потому, что для этого существует C.

Спустя 1 минута, 20 секунд (27.04.2011 - 22:24) Basili4 написал(а):
UnWind
ты это
Цитата
1001 инклуд
откуда взял ???

Спустя 45 секунд (27.04.2011 - 22:24) kirik написал(а):
Цитата (UnWind @ 27.04.2011 - 15:10)
Против того, что бы лепить классы туда, где всё можно сделать проще. Что бы потом в этой лепизне не разбирались пол года, а всё из-за того, что какой то кусок дибила посчитал, что класс на классе с кучей наследований - это круто, и если это круто - надо в каждую строчку по классу влепить.

Ты меня не понял, защитник животных. Ты опять смешал классы и ООП. В контексте нашей нашей беседы (и для php) разница в этом есть. Ты можешь написать своё приложение на классах, а можешь применить объектно ориентированный подход. Так против чего ты? smile.gif

Спустя 1 минута, 41 секунда (27.04.2011 - 22:26) twin написал(а):
kirik
Цитата
Я не стал влезать в дискуссию twin'а и linker'а по этому поводу, но тут скажу - не имеет значения в чем разбираться в процедурке или в ооп.

Вот именно. Прямо в точку. Только вот это:
Цитата
Однако в случае ООП есть четкая структура кода, разрешение зависимостей, и ещё много всяких плюшек, которых нет в процедурке (но которые при желании конечно можно накостылить).
относится не к процедурке. "Костылят" в основном на ООП. Ибо эта парадигма просто обязывает делать связи там, где они совершенно лишни. То, что призван делать язык PHP, никак не должно быть целым приложением. Это набор разных прграмм. И при нормальной структуризации в отдельной программке (модуле или еще как назвать) разобраться в сто раз проще, чем блудить в этих связях.

Вспомнить хотя бы те самые преславутые "паттерны проектирования". Вот самые костыли и есть. Придуманы для того, чтобы хоть как то этот бардак в порядок привести.

И если в прикладных языках ООП - вещь оправданная и необходимая, то PHP построен как императивный язык. И не потому даже, что так сложилось исторически. А потому, что именно этот подход как раз оправдан в той нише, которую PHP занимает.

А с пропагандой ООП язык теряет свои позиции в своей нише, никак не завоевывая других.

Хорошо наверное, что есть такая возможность, использовать объектные архитектуры. Но это не прогресс для языка. Это просто дополнительная возможность, не более того.

Спустя 49 секунд (27.04.2011 - 22:27) Arni написал(а):
Уважаемый twin, я так понимаю вы ярый противник ООП подхода, в частности в php.

Не так давно я был сторонником такой же точки зрения. Но что тут сказать. Я понял суть ООП, и уже хоть и кривовато, но уже научился изымать из этого выгоду.

Будьте уверены. Даже вы, рано или поздно сдадите позиции в пользу ООП, ибо ООП намного проще чем казалось бы процедурно ориентированное программирование. Почитал я эти все доводы, почитал мнения ребят. И раз уж интересно то выслушайте и мою бяку. У меня за спиной уже есть довольно скромный но опыт. И я могу вас заверить, сложный проект, действительно сложный проект просто заставляет использовать ООП. И не потому что ООП часто сравнивают с моделями объектов с реального мира. А потому что ООП, позволяет абстрагироваться от системы в целом, и уделить внимание, именно конкретной проблеме, в конкретном месте. Наступит время, и вы устанете выдумывать длинные имена функциям, и бить себя в лоб, ибо дали одно и тоже имя разным за предназначением объектам. Рано или поздно, потребность в пространстве имен будет стремительно увеличиваться. Сервера уже не те что пару лет назад, технологии не стоят на месте, проекты будут постоянно усложняться. И уверен, 2-3 годика поставят на процедурном программировании жирный прижырный крест, ибо человек склонен к ошибкам, а в процедурном программировании наломать дров гараздо проще. И не стоит пытаться кому-то доказать, что гора доступных переменный в конкретном месте программы это гуд. Это опасно, и не разумно.

Всем, кто хочет проигнорировать ООП, и в частности ООП в пхп, предупреждаю, вы об этом пожалеете, ибо все равно изучать и использовать вас заставит новая планка сложности.

Спустя 1 минута, 22 секунды (27.04.2011 - 22:28) UnWind написал(а):
Basili4
Да так, насмотрелся на извращения на работе, в сети и почти везде куда только не плюнь.
Как и сказал выше - изредко когда оно не так, как я сказал.

kirik
Против приложения на классах, а именно web приложения на PHP построенное на классах.
Сам ООП мне нравится, но совершенно не в PHP.
Java - приятно работать с классами, наследованиями и прочим.
Но в PHP - это лишнее.
По мойму это сплошная путанница и куча проблем в дальнейшем.
К тому же как я уже и сказал, не все правильно понимают ООП в PHP и считают, что это "пик мастерства", когда это совсем не так и начинают лепить классы и прочее везде где только можно.

Спустя 5 минут, 39 секунд (27.04.2011 - 22:34) Basili4 написал(а):
А я насмотрелся на код который не структурирован на действительно кучи инклудов на верстку выводимую из функций. И без единого класса.

Спустя 1 минута, 52 секунды (27.04.2011 - 22:36) UnWind написал(а):
Basili4
Хм... У меня сейчас начинается появлятся мнение - "Уродов везде хватает и в ООП и в процедурке", хотя покачто мое призренное мнение в сторону ООП в PHP не развенчали.
Потомучто это не для PHP, так как в PHP не пишутся крупномаштабные программы, которые требуют срочной разбивки на тысячи классов с наследованиями.

Спустя 1 минута, 37 секунд (27.04.2011 - 22:37) waldicom написал(а):
Цитата (UnWind @ 27.04.2011 - 20:28)
Сам ООП мне нравится, но совершенно не в PHP.

Так чем конкретно не нравится в PHP? Чем ООП в java круче ООП в php?

Спустя 1 минута, 46 секунд (27.04.2011 - 22:39) Basili4 написал(а):
Лично я тебе ничего не собераюсь развенчовывать твое дело. twin пишит процедурки и он прав. Я пишу классы и функции правда делаю их статичными методами дабы не было проблем с совпадением имен и Я по своему прав. Тут дело вкуса и привычки.

Спустя 1 минута, 7 секунд (27.04.2011 - 22:40) twin написал(а):
Вот опять тоже самое все сначала...
Цитата
Наступит время, и вы устанете выдумывать длинные имена функциям, и бить себя в лоб, ибо дали одно и тоже имя разным за предназначением объектам.
Да никогда я не выдумываю длинных имен. Никогда. И никогда у меня ничего не пересекается.

Читай выше:
Цитата
То, что призван делать язык PHP, никак не должно быть целым приложением. Это набор разных прграмм. И при нормальной структуризации в отдельной программке (модуле или еще как назвать) разобраться в сто раз проще, чем блудить в этих связях.


А вы стараетесь писать все в кучу. Конечно весь лоб в шишках от граблей.
Просто тебе не показали, как можно нормально спроектировать приложение, чтобы этих проблем не возникало никогда.

И вот это
Цитата
Рано или поздно, потребность в пространстве имен будет стремительно увеличиваться.
полная ерунда. Так рассуждать, то нужно вообще никогда не использовать одинаковых имен. Даже в разных проектах. Мало ли...

Разделить пространство можно не только классами, а и нормальной структурой. И ничего страшного не случится, если разные части программы используют одноименные функции. Точно так же, как разные классы одноименные методы.

Цитата
Всем, кто хочет проигнорировать ООП, и в частности ООП в пхп, предупреждаю, вы об этом пожалеете, ибо все равно изучать и использовать вас заставит новая планка сложности.

Об этом я тоже только что написал. Если квалификация программиста обуславливается сложностью его кода, а не рациональностью, то грош ему цена.

А если прогрессом считать искусственное усложнение там, где усложнять ничего не нужно, то это тупик. Это как делать автоматическую выдавливалку для зубной пасты.

Только ведь может потом найдется мальчик и скажет - "а король то голый!"

Спустя 1 минута, 43 секунды (27.04.2011 - 22:42) waldicom написал(а):
Мочало.

Спустя 1 минута, 11 секунд (27.04.2011 - 22:43) kirik написал(а):
Цитата (twin @ 27.04.2011 - 15:26)
И при нормальной структуризации в отдельной программке (модуле или еще как назвать) разобраться в сто раз проще, чем блудить в этих связях.

Тут я с тобой соглашусь, НО.. придумать, а затем создать ту самую прозрачную структуру с процедурным подходом чаще всего сложнее, чем разбить мир на объекты и с ними уже работать.

Цитата (Arni @ 27.04.2011 - 15:27)
И уверен, 2-3 годика поставят на процедурном программировании жирный прижырный крест, ибо человек склонен к ошибкам, а в процедурном программировании наломать дров гараздо проще.

Если процедурный подход должен умереть, то С уже давно червяки должны есть smile.gif

Цитата (UnWind @ 27.04.2011 - 15:28)
Против приложения на классах, а именно web приложения на PHP построенное на классах.

Ну вот.. а говоришь что согласен с twin'ом smile.gif

Спустя 1 минута, 45 секунд (27.04.2011 - 22:45) waldicom написал(а):
Цитата (kirik @ 27.04.2011 - 20:43)
Если процедурный подход должен умереть, то С уже давно червяки должны есть smile.gif

У си своя ниша, поэтому и не помирает. Что конечно не значит, что весь мир держится на ООП.

Спустя 30 секунд (27.04.2011 - 22:45) UnWind написал(а):
Цитата
Так чем конкретно не нравится в PHP? Чем ООП в java круче ООП в php?

Я уже 100 раз написал, что тем, что он тут бесполезен.
Напишу теперь в одном посте и собиру всё в кучу
Цитата

ООП в PHP что такое в моем понимании в виду взгляда на программы сторонних разработчиков и стороны логики и здарового смысла ?
ООП вообще не нужно в PHP, так как PHP не создан для больших крупномоштабных проектов, в которых программу стоило бы разбивать на множество классов и наследований, для данных целей сщуествуют Java, Python, Perl, C.
Если же, не имеет разумности пихать везде классы (когда программа маленькая и процедурное мышление было бы гораздо приемлемым), смысл ООП в PHP вообще ?
Так же, смысл создавать эти же классы, если в будующем ты не будешь их использовать в других своих разработках ? Так делает около 90%.
В связи с этим, у людей появляется мнимое впечатление того, что ООП это круто, потому, что это встречается в любой программе, даже тупо где Hello World выведенно через класс.
После чего, стая новичков, которые в последствии превращаются в нубов начинают пихать классы куда непоподя, а потом мучайся и разбирай их код в случае необходимости.
Причем готовые классы зачистую такие криворукие и пишут.


Теперь понятно о чем я?
И прошу заметить, что я не против всего ООП, а только ООП в PHP.


P.S.:> А еще больше вырубает, когда сядет какой нибудь чел, напишет в классе всю программу, потом создаст файл index.php и съинклудит файл index2.php в котором класс находится. Такое вообще очень часто заметить можно.

Спустя 4 минуты, 9 секунд (27.04.2011 - 22:50) Basili4 написал(а):
Все таки разразился холивар. И Линкера не видать.
Кстати не всегда получится создать структуру которая была бы на столько прозрачная чтоб он всем случаям подходила. А с ООП с наследованием и композицией можно. Прям любую структуру можно спроектировать и создать причем можно отельные классы убирать добавлять. Главное мыслить не конкретной реализацией а интерфейсами.

Спустя 21 секунда (27.04.2011 - 22:50) waldicom написал(а):
Цитата
Напишу теперь в одном посте и собиру всё в кучу

Коротко по пунктам:
- в С объектов нет
Цитата (UnWind @ 27.04.2011 - 20:45)
Так же, смысл создавать эти же классы, если в будующем ты не будешь их использовать в других своих разработках ? Так делает около 90%.

Смысл создавать процедуры, которые ты "... в будующем ты не будешь их использовать в других своих разработках..."
Цитата (UnWind @ 27.04.2011 - 20:45)
В связи с этим, у людей появляется мнимое впечатление того, что ООП это круто, потому, что это встречается в любой программе, даже тупо где Hello World выведенно через класс.

У людей которые не думают сами - да.
Цитата (UnWind @ 27.04.2011 - 20:45)
Причем готовые классы зачистую такие криворукие и пишут.

То же самое верно и для функций.

Спустя 2 минуты, 13 секунд (27.04.2011 - 22:52) UnWind написал(а):
Цитата
- в С объектов нет

С не изучал, только Java.

Цитата
Смысл создавать процедуры, которые ты "... в будующем ты не будешь их использовать в других своих разработках..."

Дык и для чего изобрели велосипед, если разницы нет ? Я уже битый час про это толкую.
К тому же в использовании процедуры проще в раз 10.

Цитата
У людей которые не думают сами - да.

Ну кхе, а по мойму их заставляют так думать - когда на работу не берут. Кхе.

Цитата
То же самое верно и для функций.

Согласен, но не криворукии, которые книжку с классов читать начинают.
По этому более адекватно всё выглядит.

Спустя 2 минуты, 42 секунды (27.04.2011 - 22:55) kirik написал(а):
Цитата (UnWind @ 27.04.2011 - 15:45)
так как PHP не создан для больших крупномоштабных проектов, в которых программу стоило бы разбивать на множество классов и наследований, для данных целей сщуествуют Java, Python, Perl, C.

Вот скажи, чем в наше время отличается php от python? Не надо только говорить что php === personal home page.

Цитата (UnWind @ 27.04.2011 - 15:45)
Так же, смысл создавать эти же классы, если в будующем ты не будешь их использовать в других своих разработках ? Так делает около 90%.

Есть автолоад, который не подгружает то что не нужно в конкретном приложении. И кстати этого же автолоада нет в процедурном, отсюда и возникают дурацкие 1001 инклюд, о которых ты говорил выше.

Цитата (UnWind @ 27.04.2011 - 15:45)
После чего, стая новичков, которые в последствии превращаются в нубов начинают пихать классы куда непоподя, а потом мучайся и разбирай их код в случае необходимости.

Говнокодить можно даже на брэинфаке, это не аргумент.

Спустя 29 секунд (27.04.2011 - 22:55) waldicom написал(а):
Цитата (UnWind @ 27.04.2011 - 20:52)
Дык и для чего изобрели велосипед, если разницы нет ?

Ты видел амурских тигров в живую? Нет? А они есть... Так же и смысл в других технологиях. Даже если он тебе не понятен.

Спустя 22 секунды (27.04.2011 - 22:56) Basili4 написал(а):
UnWind
не Одно дело когда ты не пользуешся а другое когда ты не знаешь а если тебе надо дописать код с ООП ты чего скаже не ООП это зло давай я напроцедурках заного все напишу.

Вот например twin он не пользуется ООП но он то его знает. НЕ стоит путать горячее с мягким.

Спустя 4 минуты, 5 секунд (27.04.2011 - 23:00) UnWind написал(а):
Цитата
Вот скажи, чем в наше время отличается php от python? Не надо только говорить что php === personal home page.

Как минимум скоростью обработки машиной и лучшим взаимодействием.
+ Программировать на ООП в python горздо приятней было бы в виду хорошей читабельности своего кода.

Цитата
Вот например twin он не пользуется ООП но он то его знает. НЕ стоит путать горячее с мягким.

Никто не говорит, что я его не знаю. Меня просто поражает то, что впринципе оно безполезно. Я буду программу на ООП кодить на Java, родом языке для ООП, а не буду писать приложение на php чисто для понту.
К тому же в своей производительности приложение будет отличаться.

Спустя 2 минуты, 48 секунд (27.04.2011 - 23:03) Basili4 написал(а):
UnWind
Ну вот если написано в описание вакансии знание ООП значит знай. Может тебе не придется писать на ООП каждый день но возникнет необходимость и что приехали ........

Спустя 20 секунд (27.04.2011 - 23:03) Arni написал(а):
twin, мне что нужно было, просто с вами согласиться чтоли? Вы несколько недопонимаете то к чему я веду.

kirik, С червяки грызть еще не скоро будут, ибо С++ сложен для компиляции ,и потому производительность хуже в результате. Не стоит забывать о том что С дал жизнь новым технологиям. Его заслуги, заслуживают почета, сам его использую для простых консольных програм досих пор.

Теперь переключусь на диалог с twin. Я никогда, нигкода это значит буквально, не начинаю городить клас, там где это не нужно. Я на днях создал на форуме тему по Nested Sets. Никто туда даже носом не ткнул. Что это было по вашему? Слишком просто? Как вы предложите реализовать управление деревом Nested Sets без ООП? Если вы думаете, что я не знаю что вы щас предложите, то вы ошибаетесь. И потому я вам зарою вопрос глубже. Меня интересует модуль управления страницами на базе наработок (в стиле процедуры и функции), но с расширенным функционалом. Смею предположить, что мне будет предложено, созжать два файла пхп, в первом набор функций для обобщающего управления деревом Nested Sets, второй, с нобором функций, которые дополнят первый. В результате, у нас сырбор с горой функций. И пространство имен, загромажденное именами типа parent, left_key, right_key, level, + куча фигни smile.gif.

Не придумаете вы тут ничего нового, что решит проблему красиво. Решить вы беспорно решите. Но внутреннюю кухню вы не спрячете.

twin, я вступаю с вами в дискуссию не потому что пытаюсь показать или что-то доказать. Мне просто приятно пообщаться с умными людьми. Умоляю, не будем ведь сводить на личности. Этого покаместь не случилось, и я хочу чтобы эта дискуссия, продолжалась в том же духе smile.gif.

Спустя 17 секунд (27.04.2011 - 23:03) twin написал(а):
kirik
Цитата
НО.. придумать, а затем создать ту самую прозрачную структуру с процедурным подходом чаще всего сложнее, чем разбить мир на объекты и с ними уже работать.
ой ли))) Ведь лукавят те, кто говорит, что проектирование приложения идет сверху вниз. Сначала мол делаем абстрактный фундамент, а потом детлизируем наследниками.

Все равно перво-наперво в голове выстраивается все приложение. Ну за исключением частностей. Как в математике. Сначала математик видит теорему и её результат, потом только доказывает.

Иначе получается то, что часто и получается. Или криво спроектированное приложение, или будет затрачено непомерно много времени на переделки. Потому что не имея в голове целостной картины можно в такие дебри забраться...

Так вот, проектировать процедурку нисколько не сложнее. Просто другие навыки и другой подход. Рациональный.

Кто не умеет рационально мыслить, тот спасается ООПэшными костылями.

Спустя 1 минута, 1 секунда (27.04.2011 - 23:04) waldicom написал(а):
Цитата (UnWind @ 27.04.2011 - 18:41)
Не может ли кто то помочь разобраться, что в действительности лучше ?


Цитата (UnWind @ 27.04.2011 - 21:00)
Я буду программу на ООП кодить на Java, родом языке для ООП, а не буду писать приложение на php чисто для понту.



Топик можно прикрывать, ибо доказывать все-равно нечего?

Спустя 32 секунды (27.04.2011 - 23:05) kirik написал(а):
Цитата (UnWind @ 27.04.2011 - 16:00)
Как минимум скоростью обработки машиной и лучшим взаимодействием.

Для веб приложения 50-100 микросекунд роли не играют, тем более что память и тот и другой любят практически одинаково. Разница лишь в том, что в python есть нормальный cgi интерфейс, однако это же влечет за собой трудности написания приложений под него. Так что и не плюс и не минус smile.gif

Цитата (waldicom @ 27.04.2011 - 15:42)
Мочало.

UnWind, провокатор smile.gif

Спустя 1 минута, 15 секунд (27.04.2011 - 23:06) UnWind написал(а):
Basili4
Дык я же и говорю, я не против ООП, просто если там написанно знание ООП, то я его должен знать, но зачистую инструмент для разработки - подбирает сам разработчик, а не его начальство.
Начальство для того и нанимает разработчика, что бы он решал такие вопросы в дальнейшем, так как зачистую начальство в программировании дуб дубом.

Спустя 2 минуты, 45 секунд (27.04.2011 - 23:09) UnWind написал(а):
Ладно короче побрел я до кровати, а то уже 2 часа ночи, и через 5ть часов вставать.
Всем всего, завтра допишу на свежую голову более везкие аргументы того, что ООП в PHP не нужно, и с Python поболее примеров постараюсь привести, но лучше с Java, так как Java я знаю а с Python не очень то и дружу.

Спустя 12 секунд (27.04.2011 - 23:09) twin написал(а):
Arni
Цитата
Я на днях создал на форуме тему по Nested Sets. Никто туда даже носом не ткнул. Что это было по вашему? Слишком просто?
Ну не дадут соврать - я вообще несколько дней ни в одну тему носа не сунул. Не до того было. Сейчас вот отдыхаю)))

Можно посмотреть на тему?

Спустя 6 минут, 25 секунд (27.04.2011 - 23:15) Arni написал(а):
Цитата (twin @ 27.04.2011 - 20:09)
Можно посмотреть на тему?

Спустя 18 минут, 53 секунды (27.04.2011 - 23:34) twin написал(а):
Цитата
Меня интересует модуль управления страницами на базе наработок (в стиле процедуры и функции), но с расширенным функционалом.

Нука вот это место поподробнее. Ничего я не понял. Особенно не понял, причем тут вообще ООП-неООП.

На базе каких наработок? C каким "расширенным функционалом"?
В теме совсем не тот вопрос.

Спустя 12 минут, 23 секунды (27.04.2011 - 23:47) Arni написал(а):
Цитата (twin @ 27.04.2011 - 20:34)
Цитата
Меня интересует модуль управления страницами на базе наработок (в стиле процедуры и функции), но с расширенным функционалом.

Нука вот это место поподробнее. Ничего я не понял. Особенно не понял, причем тут вообще ООП-неООП.

На базе каких наработок? C каким "расширенным функционалом"?
В теме совсем не тот вопрос twin, что там у нас с набором функций?

В теме не тот, верно. Но в этой теме суть вопроса в том как именно ООП подход может помочь в этом вопросе. Дабы не махать руками, я жду от вас, предложения по этому поводу.

А теперь подробно.

А я не хочу создавать страницу вызовом одной функции. Меня интересует база-решение для управления деревом отдельно, и база решений управления страницами отдельно. Ну это же нормально что мне в чем-то другом понадобится использовать теорию вложенных множеств? Конечно понадобится ... А потому, я взял и сорудил класс. Я изял выгоду из ООП, а именно инкапсуляцию. Я спрятал внутреннюю кухню, в которой достаточно много функций которые абсолютно не нужны системе, и очень нужны внутри класса который управляет деревом. Потом я создал потомка, который наследует методы и поля класса управляющего деревом, ну и дополнил его методами, которые позволяют одним вызовом, создать страницу, просто указав ,родителя. И решив задачу один раз, меня этот вопрос больше не волнует. И если гдето в классе была ошибка, я исправлю это раз и на всегда. И это решит проблему глобально, и не придется нигде в коде хоть что-то менять. Это и есть + в ООП.


Я слушаю ваше предложение

Спустя 15 минут, 7 секунд (28.04.2011 - 00:02) twin написал(а):
Если я правильно понял эту фразу
Цитата
Смею предположить, что мне будет предложено, созжать два файла пхп, в первом набор функций для обобщающего управления деревом Nested Sets, второй, с нобором функций, которые дополнят первый.

правильным решением предлагается иметь базовый класс с "наработками" и наследника с расширением функционала? И предпологается, что я предложил бы решать эту задачу функциями?

Так нет. Я бы предложил сделать это одним классом. И вообще не делить. Ибо задача достаточно специфична, функционал однотипен. Не вижу никакого смысла делить его на разные классы, тем более файлы.

Получившийся класс был бы самодостаточным (по сути библиотека), не нужно бегать по интерфейсам, разыскивая связи.

Только причем тут ООП?

UPD Ну я не ошибся. Так и есть. Магическое слово "инкапсуляция" опять идет вразрез со здравым смыслом.

Цитата
Потом я создал потомка, который наследует методы и поля класса управляющего деревом, ну и дополнил его методами, которые позволяют одним вызовом, создать страницу, просто указав ,родителя.

Какой в этом сокраментальный смысл? Разбросать функционал по задворкам, чтобы было потом удовольствием собирать это обратно, если потребуется использовать эту штуку в другом приложении? Или опять сочинять потомков?

В чем радость то? В том, что свято соблюдается принцип "черного ящика"?
Лично я плевать на него хотел. И мои классы (самодостаточные) совершенствуются с каждым разом, позволяя при следующем использовании интегрировать его несколькими вызовами нужных методов, не лепя тришкиных кафтанов из интерфейсов и не траятя время на сочинительство наследников.

Но это касается именно такого функционала, который может (и должен) быть реализован либой. Все остальное собирать по схеме родитель-потомки => пустая трата времени. Ибо затраты на проектирование не окупаются. Каждый раз проектировать приходится снуля.

Спустя 22 минуты, 3 секунды (28.04.2011 - 00:24) Arni написал(а):
Цитата (twin @ 27.04.2011 - 21:02)
Так нет. Я бы предложил сделать это одним классом. И вообще не делить. Ибо задача достаточно специфична, функционал однотипен. Не вижу никакого смысла делить его на разные классы, тем более файлы.


Вот тут то я вас и поймал. Нет, задача далеко не специфичная. Я бы даже сказал, абстракция и потребность в абстрагировании настолько очевидна, что просто напросто ярче примера трудно найти. Потому что любое дерово Nested Sets требует наличия полей в базе данных таких как левый, правый ключи, уровень. Сама же страница ,которая может быть потомком категории фиг его знает какого уровня, это уже специфика, потому что у страницы есть свои поля. И класс, которые управляет деревом, спокойно можна применить в любой другой задаче. Пример с старницами это далеко не удел. И попытки повторять код в разных классах одной системы, обозвут г*внокодом. Можете быть в этом уверенны. Плевать на мнение других можно, часто даже нужно. Но вы не сможете себе этого позволить в условиях рынка, когда вашу систему нужно продать. И ваше мнение, личное, и может даже правильное. НЕ ОЦЕНЯТ.

И кстати, вы всетаки используете ООП. И это я понимаю. Ценю то что спор идет в том что не стоит его подключать надо и не надо. Тут я с вами полностью согласен.

Спустя 53 минуты, 51 секунда (28.04.2011 - 01:18) twin написал(а):
Arni
Цитата
Вот тут то я вас и поймал.
Ну я бы не торопился с выводами. smile.gif
Цитата
любое дерово Nested Sets требует наличия полей в базе данных таких как левый, правый ключи, уровень.
Я это знаю. Только причем тут вообще таблицы? Или класс жестко привязан к конкретным таблицам? Тогда я вообще отказываюсь понимать.
Цитата
И класс, которые управляет деревом, спокойно можна применить в любой другой задаче.
Вот именно. Я бы и сделал класс для управления деревом. А все остальное к задаче отношения не имеет.
Цитата
И попытки повторять код в разных классах одной системы, обозвут г*внокодом.
Правильно сделают. Ибо насколько я понял тут ошибка в самой архитектуре. Которая возможна как раз при таком расслабляющем свойстве, как наследование.

И еще, можно тут уточнить - что является "системой"? И почему я должен
Цитата
повторять код в разных классах
?

Конечно можно просто сделать один абстрактный класс, а потом конкретизировать его в потомках, дописывая тонны кода. Только это ли не г*внокод? Переписывать из приложения в приложение кучу наследников?

Основной функционал для работы с деревом должен быть универсальным. Тогда стократ проще использовать его в разных скриптах. А наследование тут дело совершенно десятое.

Все, что выходит за рамки работы с деревом (создание страниц и т.д.) - это другая задача совсем. И решается совершенно различными методами. Я вот не вижу смысла делать такой клубок. Пусть он по объему будет меньше, но по прозрачности и повторному использованию останется далеко позади модульной схемы.

Цитата
Но вы не сможете себе этого позволить в условиях рынка, когда вашу систему нужно продать.
Это смотря какая система)))
Если я, наплевав на модные течения, придумаю что то более рациональное и прозрачное, а то и универсальное, еще как)) Есть опыт такой.

Цитата
И кстати, вы всетаки используете ООП. И это я понимаю.
Только в рамках чужого кода. Или это вывод из того, что я использую классы? Так это не ООП вовсе.

Спустя 4 часа, 23 минуты, 34 секунды (28.04.2011 - 05:41) kirik написал(а):
Цитата (Arni @ 27.04.2011 - 17:24)
И попытки повторять код в разных классах одной системы, обозвут г*внокодом. Можете быть в этом уверенны. Плевать на мнение других можно, часто даже нужно. Но вы не сможете себе этого позволить в условиях рынка, когда вашу систему нужно продать. И ваше мнение, личное, и может даже правильное. НЕ ОЦЕНЯТ.

Вот тут я не соглашусь. Продать можно всё что угодно, и говнокод в том числе (что чаще всего и бывает). Не оценят те, кто будет работать с исходником, а это уже другие люди, которые к покупке отношения не имеют. Опенсурс - единственное место где проект получит полноценную оценку сообществом программистов.

Цитата (Arni @ 27.04.2011 - 17:24)
И кстати, вы всетаки используете ООП. И это я понимаю.

twin использует классы как обёртку для функций, которые решают одну общую задачу. А это не есть ООП. И он противник именно ООП подхода - длинючих цепей наследования, мутного паттерна "фабрика", итд.
Из моего опыта не было ещё задачи, которую нельзя было бы красиво решить без использования ООП.

Arni
Про nested sets - можешь организовать конкурс с этой задачей. Только попозже, как страсти с новым конкурсом утихнут.

Спустя 1 час, 19 минут, 32 секунды (28.04.2011 - 07:01) inpost написал(а):
Цитата
К тому же такое мнение у меня было изначальным, что ООП - это не для PHP, больших проектов на PHP не напишешь, а для маленьких - это глупо.
facebook, vkontakte, travian, и если не ошибаюсь, то и habrahabr тоже. Проекты надо смотреть как сайты, которые приносят прибыль, и большую, а они на ПХП.
Цитата
Против того, что бы лепить классы туда, где всё можно сделать проще.
Класс относится к процедурке smile.gif
<pre class="sh_sourceCode" rel="code">Зачем лепить в теле программы 1001 инклуд, и 1001 класс</pre> А на деле оказывается, что из 10 инклюдов, 9 - это разделение MVC, сама же индивидуальная страница подключает 1, или максимум 2 класса, что 1-2 инклюда для скрипта мизерны, но тот же класс позволяет облегчить работу.
Цитата
Ты же операционную систему на PHP писать не будешь или на Java ?
Человек, которому 60 лет, он знает, что завтра от умрет, и толку от операционной системы на ПХП будет 0. Мне 23 года, за 20 лет производительность PC выросла в сколько раз? Посчитай, теперь прикинь уровень прогрессии развития процессоров, ведь в основном вся работа сервера зависит от него, ещё добавь память сюда. Итак, когда мне будет 43 года, те запросы, которые обрабатываются сейчас 1 минуту, будут обрабатываться за 0,001 секунду, кроме этого идёт разработка ПХП6, где будет развит ПХП ещё больше. Что мне мешает создать ОС в мои 43-45 лет? А будет мешать лишь ОТСУТСТВИЕ знаний, которые по "глупости" я не смог получить именно сейчас. Если ты не гуру в ООП, то все последующие сайты необходимо писать именно на ООП, чтобы научиться.
Цитата
Да так, насмотрелся на извращения на работе, в сети и почти везде куда только не плюнь.
Бесплатный сыр бывает только в мышеловке. Ты можешь создать свой продукт и продавать лицензию за 1000$, и огромную структуру целостную нельзя будет нарушить, а значит за собой ты всегда оставляешь авторские права на продукт, а процедурка не сможет тебя выделить как автора проекта. Так вот, всё, что ты видишь - это бесплатный сыр.
Цитата
А еще больше вырубает, когда сядет какой нибудь чел, напишет в классе всю программу, потом создаст файл index.php и съинклудит файл index2.php в котором класс находится. Такое вообще очень часто заметить можно.
Скажу коротко, я не в ответе за кривизну рук и кода, написанного за пределами моей студии. Качество подтверждается не подходом, а его реализацией! Пример: село, где часть пользуются современной мега техникой, либо бабульки, которые выращивают свою собственную незатравленную картошку, так вот, я покупаю именно второй вариант, потому что картошка более качественная получается.
Цитата
Дык я же и говорю, я не против ООП, просто если там написанно знание ООП, то я его должен знать, но зачистую инструмент для разработки - подбирает сам разработчик, а не его начальство.
И получаются низкосортные копи-паст сайты: "интернет-магазин за 2000 рублей", "сайт-визитка за 300 рублей", "портал знакомств на джумле за 500 рублей". "10 сайтов за 5 000 рублей", и это только мизерная часть того, что просят на фрилансе. А теперь в противовес покажу качественные проекты: "Социальная сеть: 200 000 рублей", "Поисковая система по примеру Гугла и яндекса: 500 000 рублей", "Пакет сайтов знакомств: 250-300 000 рублей", вот и подумай, у кого из них "сайт запихнули в 1 класс под именем index2.php" ?

Без цитаты: первое место по продажам среди курсов PHP занимает "г-на Попова работа - видеокурсы"! Продукт на продажу лежит перед тобой, тебе же достаточно взять лишь его в руку и продать вне зависимости от качества! smile.gif

Ну и самое последнее: ООП и КЛАССЫ - это разные вещи.

Спустя 1 час, 40 минут, 21 секунда (28.04.2011 - 08:41) ApuktaChehov написал(а):
Мне недавно предложили сложный проект. Это система расчет заказа.
Именно на этом примере хорошо прослеживаются причиню использования ООП.
Дело в том, что этот самый расчет заказов состоит из большого числа операций. А каждая операция включает в себя кучу параметров.

Вот я не представляю как же написать это не используя объектно-ориентированный подход. Причем хочу уточнить, речь идет не о классах. Я говорю об объектно-ориентированной логике приложения. И для реализации этой логики нужны соответствующие инструменты от языка.

К примеру модуль работы с материалами:
Функции: добавить материал, удалить, изменить, заблокировать, права доступа к материалу, получить информацию о материале(стоимость, поставщик и т.д.). Расчитать массу одной еденицы материала, расчитать стоимость(1кг, 1 ед, 1 тонна) и еще много чего там.

Вот как это сделать на процидурке? Когда для выполнения одной операции требует задействовать множество функций.

Мне кажется что использовать ООП уместно только при объектно-ориентированной логике приложения.

Спустя 8 минут, 57 секунд (28.04.2011 - 08:50) kirik написал(а):
Цитата (ApuktaChehov @ 28.04.2011 - 01:41)
Вот как это сделать на процидурке?

Пишешь класс с кучей методов - на каждое действие (которые ты описал). И всего делов! smile.gif

Спустя 5 минут, 14 секунд (28.04.2011 - 08:55) ApuktaChehov написал(а):
kirik - это сарказм?

Спустя 52 минуты, 23 секунды (28.04.2011 - 09:48) Arni написал(а):
twin, ну как же это я вас да не поймал? Вы же черным по белому написали что сделали бы единый класс, который будет управлять страницами и деревом в целом. А значит если вам понадобится еще некая фича в которой также используются деревья, вам придется повторить код, а именно работающий с деревом. А я говорю что разумно будет унаследовать готовый класс, и дополнить его нужным кодом относящимся только к страницам.

Спустя 15 минут, 46 секунд (28.04.2011 - 10:03) twin написал(а):
Где я написал, что сделал бы
Цитата
единый класс, который будет управлять страницами и деревом в целом.
?
Я как раз наоборот написал. Что сделал бы библиотеку для дерева, которую можно использовать где угодно. А как работать со страницами или нестраницами - другая задача совсем. И в мыслях не было все плести в один клубок.

Я как раз и стараюсь писать так, чтобы такой востребованный функционал, как работа с деревом к примеру, был самодостаточным. А как его интегрировать - наследуя или прямыми вызовами - к контексту отношения не имеет. Лично я не вижу смысла плести такую паутину. Пусть это немного объемнее и на первый взгляд дольше (что совершенно не так), но зато прозрачнее и универсальнее.

ApuktaChehov
Слишком размыто, чтобы сказать что-то конкретное. Но я не вижу особых проблем. Вообще не вижу особой разницы, как реализовать.
И уж тем более не понимаю, что есть
Цитата
объектно-ориентированная логика приложения.

Логика приложения будет такой, какой ты её сделаешь. Сама по себе она не бывает ни объектной, ни процедурной.



Спустя 22 минуты, 5 секунд (28.04.2011 - 10:26) ApuktaChehov написал(а):
twin - в данном примере объектно-ориентированная логика приложения - это когда каждая операция - отдельный объект. Таким образом имея набор объектов - операций, ими можно как угодно манипулировать.
Ну как конструктор. Когда каждая частица можно взаимодействовать с любой окружающей частицей.

Спустя 1 час, 22 минуты, 31 секунда (28.04.2011 - 11:48) Arni написал(а):
Так, стоп. Прокоментируйте пожалуйста эти свои слова.

Цитата

Так нет. Я бы предложил сделать это одним классом. И вообще не делить. Ибо задача достаточно специфична, функционал однотипен. Не вижу никакого смысла делить его на разные классы, тем более файлы.


И теперь вот это.

Цитата

Я как раз наоборот написал. Что сделал бы библиотеку для дерева, которую можно использовать где угодно. А как работать со страницами или нестраницами - другая задача совсем. И в мыслях не было все плести в один клубок.


Что-то не склеилось у меня по вашим утверждениям. smile.gif

Спустя 44 минуты, 36 секунд (28.04.2011 - 12:33) twin написал(а):
Вот это:
Цитата
в первом набор функций для обобщающего управления деревом Nested Sets, второй, с нобором функций, которые дополнят первый. В результате, у нас сырбор с горой функций. И пространство имен, загромажденное именами типа parent, left_key, right_key, level, + куча фигни
я не собирался делить.

Что значит
Цитата
для обобщающего управления деревом
? Смею предположить базовый класс. По видимому абстрактный. А вот это:
Цитата
второй, с нобором функций, которые дополнят первый.
уже потомки. В которых предполагается организовть разделение пространства имен и использовать по всему приложению
Цитата
left_key, right_key, level, + куча фигни


Так вот. Я бы всё, что касается работы с деревом, поместил бы в отдельный класс. Все остальное, создание страниц и прочие телодвижения - отдельная задача.

От того и написал, что у тебя
Цитата
ошибка в самой архитектуре. Которая возможна как раз при таком расслабляющем свойстве, как наследование.
Так как ты свой клубок, запутанный с таблицами, страницами и деревом в "одной системе" ни за что не сможешь использовать в другом приложении, не внося глобальных корректив. Ну если это конечно не полная копия.

Тебе полюбому придется переписывать потомков.

Спустя 13 минут (28.04.2011 - 12:46) Zerstoren написал(а):
Ну и я вставлю свои 5 копеек.

Вопрос в чем, ООП хорошо или плохо.

Как по мне то использование всей идеи ООП не имеет смысла в ПХП.

К примеру, интерфейсы: толку от них если они только обязывают создать метод в объекте? От собственного склероза, ну тогда можно.

Абстрактные классы, я так и не понял прямого назначения, по этому промолчу.

Наследование. Да, вещь бесспорно полезная. Но толку от нее мало пока нету множественного наследования. За все время писания кода, я использовал на ПХП наследование 1н раз, в своем МВЦ движке. А будь множественное наследование, то можно было б просто объявлять требуемый функционал из объявления класса, ладно, с этим все ясно.

По большей части функционал ООП не нужно в приложениях простых проектов.


Чем так хороша или плоха процедурка?

Сайтов на процедурке от других писак я уже видел столько - что блевать хочется.
Когда на сайте 1н файл index.php и в нем лежит 2400 строк и это инет магазин. Да ничего не понятно в этом коде. Я через 6 часов начал въезжать что к чему.

Как по мне бесполезно использовать этот инструмент новичкам.
Но человек с хорошим мышлением может подойти к этому вопрос так - что код будет ясен и проблем не возникнет.

Но для новичка все равно не покатит.


Такс и что в итоге, и то и другое плохо? А как жить тогда?
Лично я пишу все в классах которые максимально короткие, там нету бессмыслицы типа
function function_name($str) {
return $str;
}


Подобные код я много раз встречал в ЦМС и Фреймворках, логичного применения я так и не нашел.
Ну вот если у нас на сайту нужно вычислять корень квадрата делить на 2 и делать еще какую-то вещь, то все действия я стараюсь выполнить в одной функции, а не разбивать это действие на большое количество функций, как очень любят делать шизики ООП.

Код должен быть краток, лаконичен, понятен и быстрым в интерпретации.
Никаких файлов по 2к строки, то что *атцы* пишут кучу файлов в которых куча кода, а после разбора его - ты понимаешь что 90% его не нужно.


Я написал свой фреймворк, весом в 3.8кб - и черт, он не збоит, не тормозит, а делает все не хуже чем Code Igniter.
Хотя CI весит 2 мб, если откинуть все либы и оставить только ядро то он будет весить 1мб. Спрашивается, зачем? Когда то-же самое реализовывается за менее увесистый код.


Использование объектов с методами должно происходить с неотъемлемым использованием процедрки, т.е. они должны переплетаться так, чтоб не было проблем с пониманием задачи метода и класса (даже если комментов нету).

если метод называется img_db(); то этот метод должен сделать все чтоб достать путь к картинке через базу и вернуть его, не прибегая к использованию других классов или функций.

Если это контроллер, то он сам должен дать инфу для въювера и модели, что нужно вывести, а не прибегать еще к каким-то функциям чтоб те делали работу за него (я откидываю либы т.к. это совсем другое)


Спустя 20 часов, 11 минут, 29 секунд (29.04.2011 - 08:57) UnWind написал(а):
Чего то уже день прошел, а желание спорить не проснулось.
В общем, я останусь при своем мнении, что процедурка гараздо лучше ООП в PHP, так как изначально PHP разрабатывался как процедурный и ООП в нём лишьнее.
И если мне понадобится написать крупномаштабное приложение, где не обойтись без ООП, то я сделаю это приложение на Java или в связке.

Спустя 1 час, 54 минуты, 28 секунд (29.04.2011 - 10:52) kirik написал(а):
UnWind
biggrin.gif

Спустя 19 минут, 58 секунд (29.04.2011 - 11:12) linker написал(а):
UnWind
Си тоже разрабатывался как процедурный язык, однако это не помешало появлению C++.
Для каждой задачи нужен свой подход.

Спустя 1 час, 3 минуты, 20 секунд (29.04.2011 - 12:15) twin написал(а):
Я посмотрел на твой подход к решению элементарной задачи...
Про сортировку.
Не стану даже комментировать. Все, что я писал и в этой теме и раньше, ты очень наглядно проиллюстрировал. Я не ошибся ни в одной строчке.

ООП в php - горе от ума.

Спустя 16 минут, 39 секунд (29.04.2011 - 12:32) linker написал(а):
А ты не смотри на остальное файло, собственно вся основная функциональность заключена в одном классе Collection. Считай, что остальные файлы-классов являются часть некоего большого проекта, а сортировка только малая функциональная возможность. Если бы ты чуть более присмотрелся, то заметил бы куда больше, нежели смог в силу своей неприязни к ООП.

Спустя 53 минуты, 36 секунд (29.04.2011 - 13:25) twin написал(а):
Я все увидел, не думай обо мне так плохо.
Цитата
Считай, что остальные файлы-классов являются часть некоего большого проекта
Ты забыл уточнить - твоего проекта. Потому что в отрые от него вся эт "красота" - полный пшик.

Да и просто запустить его не каждый сможет. Потому что ты там понаворотил своих прибамбасов вагон и телегу.
О чем я и говорил. Удобно только тебе. Все остальное - побоку.
Тонна кода, фишки-шмишки, псевдо-крутость, а на деле - муть и бесполезность.

Так же в свое время Вася писал гостевую на ООП. Тот еще шедевр.
Как работа для резюме - отлично. И та работа и твоя. Запудрить моск работодателю. А на практике - фикция.

Спустя 20 минут, 2 секунды (29.04.2011 - 13:45) sergeiss написал(а):
(сбегал за попкорном и удобнее устроился у экрана smile.gif)

Спустя 8 минут, 58 секунд (29.04.2011 - 13:54) Семён написал(а):
Что лучше легковая машина или грузовик?
У вас бессмысленный спор, ООП отлично решает задачи при разработке сложных проектов, над которым трудится как минимум 2 человека и имхо twin процедуркой тут одной не обойтись, однако в некоторых ситуациях переизбыток его идёт во вред.

Спустя 3 минуты, 16 секунд (29.04.2011 - 13:57) linker написал(а):
Если рассматривать эту сортировку как отдельный самостийный проект из одной веб-страницы, то всё что я накалякал - полное туфта и действительно не имеет никакой ценности (я и не ставил себе цели, в данном случае, самостоятельности от чего-либо). Но! Любая приблуда под что-то пишется и не может существовать сама по себе, т.е. как ты пишешь - быть "в отрыве". Если ты рисуешь функционал, то рисуешь его под конкретную более глобальную вещь. Нельзя написать функцию " в отрыве" и думать, что эта твоя кузявая вешь наделена крутизной уже сама по себе, на самом же деле она - "полный пшик"©.

Красоту и мощь ты почувствует только в достаточно крупном проекте (не ограниченным банальной сортировкой).

Спустя 25 минут, 2 секунды (29.04.2011 - 14:22) twin написал(а):
Цитата
ООП отлично решает задачи при разработке сложных проектов, над которым трудится как минимум 2 человека


Нужно наверное памятку сделать и туда пруфы давать... Повторяется все одно и то же.
Причем тут сложность проекта? И количество народа?
Нормально организовать взаимодействие программистов можно не только поделив зоны влияния области видимости. Это уже организационные вопросы.

А вот последующая поддержка проекта (особенно в продакшене, где с ним будут иметь дело сторонние программисты), не менее важна для веб.

Почему именно для веб. Поясню. Что такое сайт и как его используют.
Вот сделал linker интернет-магазин к примеру. Он крут, там куча наваротов, работает просто безупречно. Заказчик доволен.

Начинает его эксплуатировать. Так, как написан сайт профессионалом высокого уровня - вероятность сбоев минимальна. И значит у владельца нет необходимости держать в штате программиста.

Так в основной массе и происходит. Так вот, эксплуатирует заказчик магазин, месяц, год. Доволен как слон. И тут меняется торговое законодательство, коньюнктура или еще какой катаклизм, который к самой разработке отношения не имеет.

А linker двно уже другими делами занимается, связь с ним потерена и вообще ему недосуг.
Заказчик кидает клич - "ищу программиста, умеющего разбираться в чужом коде". Знакомо?
Находится такой. Открывет и...
поправив на голове вствшие дыбом волосы заявляет. Стоимость моих услуг - 20$ в час. На изучение доков мне нужно 3 дня. Потом посмотрим, как и что я смогу там поправить.

Заказчик считает, считает... И заказывает новый сайт.

История из жизни. У меня такое было неоднократно.

Все тоже самое касается фреймворков. Если повезет найти сразу специалиста, тот уже стоит дорого. А если нет - читай сначала. Часто бывает так - я хочу чтобы сделал именно ты. А я не знаю фреймворка. Приходится рыться в доках, что стоит заказчику денег.

Теперь другая схема. Любой программист открывет сделанный процедурно сайт и видит там привычные функции. Ему остается только понять логику, что в процедурке гораздо проще. Так вот такую работу делать - удовольствие. Даже ляпы испралять попутно - радость. Потому что все предельно ясно и все на месте. Не нужно бояться, что гдето на другом конце сайта чего-то рухнет из-за связей и "красоты".

Цитата
Красоту и мощь ты почувствует только в достаточно крупном проекте

Я плотно имел дело с вики-движком. Адаптировал под какие-то конкретные нужды. Никогда, под страхом смерти я больше за такую работу не возьмусь.

Спустя 9 минут, 54 секунды (29.04.2011 - 14:32) sergeiss написал(а):
linker - в данном случае я с тобой не согласен. Конкурс как раз и хорошо тем (отчасти) что призывает сделать некое универсальное решение, которое может быть легко интегрировано в любое приложение. И не важно, что данное решение может быть и не нужным ни в одном РЕАЛЬНОМ проекте. Но в процессе программер учится думать, как именно решить данную задачу. Чтобы была не каша, а четко очерченное решение.

Это подобно MVC: можно сделать кашу (т.е. без MVC), а можно разделить представление и обработку.

Спустя 15 минут, 58 секунд (29.04.2011 - 14:48) linker написал(а):
Обычно, заказ нового сайта происходит по причине трудоёмкости перевода на новый дизайн. Заказывать новый сайт, только ради того, что фрилансер не имеет способности, например нарисовать конвертер валют под текущий рабочий проект - полный бред.
Прелесть фреймворков в том, чтобы именно удешевить и упростить не только разработку, но и поддержку с доработкой. Банальный пример, Вася нарисовал один сайт одним вариантом, второй сайт другим вариантом, третий сайт ещё иначе, в результате наклепал процедурками 10 абсолютно разных по реализации сайтов. Всё это барахло вдруг досталось тебе, потому что Вася уехал за бугор и тебя наняли для доработки функционала на всех этих 10 сайтах. И вот тебе бедному копаться в этом самописном гумне хрен знает сколько времени. А если бы Вася написал все эти 10 сайтов на одном фреймворке, то реализация была бы одна, только функционал разный, в результате ты счастливый и довольный, быстро доработав функционал получил свои заветные денюжки и уже трудишься на другим заказом.

Поддержку упрощает не метод программирования: функции, ООП и пр., а унификация реализации разных проектов. В самописном велосипедировании реализация живёт по законам хаоса - кто во что горазд и именно такое положение в разработке очень сложно суппортить в конечном итоге.

Программисту пофигу, знакомые там функции или знакомые там классы.


sergeiss
Я это прекрасно понимаю, отчасти по этому я выступил вне конкурса. Отчасти - позлить Твина классами, объектиками, наследованием, инкапсуляцией и прочим smile.gif Универсальности я так и не увидел, кстати.

Спустя 15 минут, 11 секунд (29.04.2011 - 15:03) sergeiss написал(а):
Цитата (linker @ 29.04.2011 - 15:48)
Прелесть фреймворков в том, чтобы именно удешевить и упростить не только разработку, но и поддержку с доработкой. Банальный пример, Вася нарисовал один сайт одним вариантом, второй сайт другим вариантом, третий сайт ещё иначе, в результате наклепал процедурками 10 абсолютно разных по реализации сайтов. Всё это барахло вдруг досталось тебе, потому что Вася уехал за бугор и тебя наняли для доработки функционала на всех этих 10 сайтах. И вот тебе бедному копаться в этом самописном гумне хрен знает сколько времени. А если бы Вася написал все эти 10 сайтов на одном фреймворке, то реализация была бы одна, только функционал разный, в результате ты счастливый и довольный, быстро доработав функционал получил свои заветные денюжки и уже трудишься на другим заказом.

Но если бы эти 10 сайтов сделали несколько программеров на разных фрейворках... То придется изучать все эти фреймворки smile.gif Либо - искать кучу программеров, каждый из которых хорошо знает определенный фреймворк.

Спустя 5 минут, 9 секунд (29.04.2011 - 15:09) linker написал(а):
sergeiss
smile.gif Ну сколько их, три-четыре популярных фрейма, суть которых абсолютно одинакова. Это гораздо проще, чем все 10 абсолютно разных реализаций.

Если бы я был в конкурсе, то подобной бойды не написал бы, конечно же.

Спустя 48 минут, 29 секунд (29.04.2011 - 15:57) twin написал(а):
Мы на разных языках говорим.
Цитата
И вот тебе бедному копаться в этом самописном гумне хрен знает сколько времени.

Ты работаешь на своем фреймворке, обслуживаешь одну систему. И привык к ней. Тебе кажется все просто и красиво.

Мне же часто приходится иметь дело со сторонними разработками.

Так вот. Запутать процедурный код - нужно ооочень постараться. А в ООП изначально без 100 грамм делать нечего. Хоть фреймворк это, хоть мреймворк.
Потому что сама парадигма такова, что никогда прозрачной не будет.
Так что я скажу с точностью до наоборот. Гораздо хуже копаться в ООП гумне, потому что мало того, что и так гумно, так еще и твой Вася понаговнокодил.
Чистый говнокод разобрать можно просто в резиновых перчатках. А вот ООПговнокод (а 90% сайтов на ООП именно так и написаны) - тут нужно пару ассенизационных машин вызывать.

Ты рассуждаешь чисто теоретически, вроде как на первый взгляд даже логично. Но к действительности это отношения не имеет буде выдернуто из розовых рамок теории в суровые будни. Как и твой скрипт не имеет практического применения вне контекста твоей системы.

Повторяться не буду - надоело.




Спустя 2 часа, 43 минуты, 7 секунд (29.04.2011 - 18:40) linker написал(а):
twin
Велком на говнокод.ру, там таких запутанных говнопроцедур вагон и более, с лихвой хватит на десятки лет ломания головы и сотни литров выпитой водочки для успокоения своих нервов.

Суть говнокода не в интрументах или методиках (парадигмах), суть в самих программерах. Когда это дойдёт до тебя, тогда тебе будет без разницы, процедурки или классы с объектами, тебе как профи будет параллельно.

Спустя 41 минута, 52 секунды (29.04.2011 - 19:22) Zerstoren написал(а):
Твин, Линкер.

Сколько за год вы перекопали чужих сайтов, когда нету ни доков ничего?

Личный домысел (10-20, 30 может быть)

А теперь я, как СЕО программист, за год уже перелопатил близко 100 сайтов написанных неизвестно кем. Друг жены, моей подруги немного шарит в ПХП.

Примерно так приходит близко 40% проектов. Остальные ЦМСки в виде Джумлы, Друпалы, МодХ, ВебАссист.

т.е. у меня стабильно было сайтов 40 которые были написаны не известно кем и как.

А теперь я начну кидаться какахами:
http://clip2net.com/clip/m50902/1304088857-clip-26kb.png - пока нормально, похоже на признаки Поповщины, но это не от него.

Самописный процедурный сайт http://clip2net.com/clip/m50902/1304092317-clip-21kb.png , картинки выводятся с базы, страницы сайта грузятся по 12 секунд, хостер забанил файл, где происходит коннект к БД. Убито 16 часов, на не большой аудит

И думаю это финалист - создатели сайта uatrade.net (страна должна знать своих героев).
Они создали интернет магазин, индекс.пхп которого состоял из 5к строк, почта на каждую строку было пустые две.

Я почистил и осталось 2400 строк процедурного кода. А что в итоге было: я 6 часов потратил чтоб как-то сделать 404 страницу. Да, черт возьми 6 часов, и это после года работы, ежедневного разбора чужих писак.

Вот так под конец выводился СЕО текст прошлой студии, работающей до нас над сайтом (кажется крутили создатели сайта) http://clip2net.com/clip/m50902/1304092784-clip-29kb.png , переменная $caption - это h1 страницы.

Пагинация http://clip2net.com/clip/m50902/1304092898-clip-24kb.png


Какашек в коде еще тьма тьмущая.




К чему я веду? Все что сделано было на этом сайте, реализовывалось максимум за 100кб кода. Почему? Я написал свой Фреймворк, который весит 3.8кб и в оболочку к нему весом в 160 кб. А сайт будет в раз сто сложнее этого интернет магазина без регистрации/оплат/корзины.

Это один их тех проектов на которые я самое больше матерился. Нету ООП, но мата в шестиэтажный дом.
Про джумлы и другие ЦМСки рассказывать не буду. И так все знают о их убожестве.

Потрачено близко 46 часов.

Примеров у меня еще тьма тьмущая. Начиная от всяких говно html сайтов (да были случаи когда был именно говняный сайт на html) заканчивая запутанным сайтом на Code Igniter (они смогли так сделать, не вероятно).

Вот Твин - я вам привет пример когда процедурный код говно.
Линкер - ООП реализация обычно запутана до неймоверности.


Если честно то я не вижу разницы, что ООП через жопу пишут, что процедурку.
Если пишут сайт именно программисты, а не люди по профессии {% profession name %} и чуть-чуть пишут на PHP.

Бида в том что ПХП, слишком просто для понимания - и его может знать почти любой человек который хоть чуть-чуть разбирается в компах.



Фух все. Много букафак)

Спустя 4 часа, 8 минут, 27 секунд (29.04.2011 - 23:31) kirik написал(а):
Итак, мы медленно, но верно идём к тому, что любой код - говно.
sergeiss, у тебя попкорн ещё остался?

Спустя 1 час, 54 минуты, 28 секунд (30.04.2011 - 01:25) inpost написал(а):
kirik
Совершенно верно, только понятие того, что сейчас мы имеем говно заставляет двигаться дальше. Если бы на PHP1 сказали, что это круто и всё такое всякое, то никаких сдвигов не было бы и подавно smile.gif

Спустя 1 час, 3 минуты, 57 секунд (30.04.2011 - 02:29) kirik написал(а):
inpost
Это верно, только конечного результата нет, и не будет) То что есть сейчас - текущий говнокод, то что было - говнокод прошлого. А то что будет, то на тот момент времени станет говнокодом текущим smile.gif

Спустя 5 часов, 32 минуты, 33 секунды (30.04.2011 - 08:02) twin написал(а):
Программист так устроен, что 90% не его кода - говнокод.
Тут дело не в этом. Понятное дело, говнокод - все. Мой для linker'a, его для меня.

Для Zerstoren'а мы оба порядочные говнокодеры. Потому что разздражает копаться в чужом коде, который построен по другим правилам, нежели хотелось бы. Потому что он
Цитата
написал свой Фреймворк, который весит 3.8кб

(с большой буквы). Болше чем уверен, что и я, и linker начали бы плеваться, глядя на этот Фреймворк.

Ровно как я считаю полной бредятиной ZEND фреймворк. А люди крестятся в страхе - богохульник! Его же разрабы PHP писали!!! Свят, свят.
Ну что поделать, если мне он не нравится.

Так что kirik прав - любой код говно. Наговнокодить могут все, человеку не чуждо ничего человеческого. Английская королева тоже какает и ковыряет в носу.

Так вот, дело тут в степени этой, назовем более мягко, "какости" кода. А она определяется:

1. Кривизной архитектуры
2. Отсутствием прозрачности
3. Использованием суррогатного синтаксиса
4. Дремучестью стиля написания
5. Бестолковостью алгоритмов.

И если пройтись по пунктам и сравнить:

1. Посмотрите конкурсную работу №4, вот пример того, как проектируется ООПговнокод. Сделать основной класс наследником конфиги - обречь его на единичное использование. Тоесть для другой таблицы уже никак. Говнокод? О, еее. Так вот в процедурке такое впринципе невозможно. Сейчас мне возразят - возможно другое. Но. То, что возможно в процедурке, легко говнокодится и на ООП. А вот обратной совместимости нет. Так что тут плюс один объектам.

2. Прозрачность. Будем спорить? Или так ясно? Если я смотрю функционал наследника, а родительский класс (а то и несколько по инстанции) находятся черти где, смогу я понять картину происходящего? Особенно если высока степень абстракции. Что вот это такое?
$form->setMethod('post')
->
setAction('/mypage')
->
addDecorator('formElements')
->
addDecorator('htmlTag', array('tag' => 'table'))
->
addDecorator('form');
$form->addElement('text', 'username', array('disableLoadDefaultDecorators' => true, 'required' => true, 'label' => 'Логин'));

$form->username->addDecorator('viewHelper')
->
addDecorator('errors')
->
addDecorator(array('tdTag' => 'htmlTag'), array('tag' => 'td'))
->
addDecorator('label', array('tag' => 'td'))
->
addDecorator(array('trTag' => 'htmlTag'), array('tag' => 'tr'));

Пример я уже приводил, лень искать другие. Ну? Что за декоратор, что он такое делает, с чем его едят? Ищи-свищи.

Да, процедурка потому и объемнее, что зачастую приходится повторять код в модулях. Но прозрачнее, стопудов. Так же используются функции и те же классы, которые в других файлах, но логика функционала вся на виду.

Так что по какости в области прозрачности ООП дает сто вперед процедурке.

3. Смотри пример выше. Это всего навсего генерация формы в табличном виде. Другими словами - верстка. А ну, покажите это верстальщику. Как думаете, сколько раз он упоменет в своем комментарии мужские гениталии?
А потому что это - ООП фреймворк. Это использование альтернативного синтаксиса.
Вот если включить счетчик, то тут количество матов будет существенно меньше (это тоже самое):
    echo "<form action=\"/mypage\"  method=\"post\">\r\n";
echo $errors;
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n"
. "<tr>\r\n"
. "<td>\r\n"
. "Логин <input name=\"username\" type=\"text\" />\r\n"
. "</td>\r\n"
. "</tr>\r\n"
. "</table></form>";

Говнокод? О, да! Как же, а где разделение? Кто так по детски пишет!
Ну ладно, согласимся. Сделаем разделение. Обычным нативным синтаксисом (не забывая поглядывать на счетчик матов, подключенный к верстальщику)
<form action="/mypage"  method="post">
<?php
echo $errors; ?>
<table
width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
Логин <input name="username" type="text" /></td>
</tr>
</table>

А так же можем посчитать количество символов (к вопросу о прибавке в скорости от фреймворка).

Ну будут еще попытки убедить окружающих в том, что суррогатный синтаксис фреймворка выгоднее? Лично я ставлю в этой позиции ООП жирный минус.

4. Тут один-один. Все зависит только от аккуратности писавшего, от его уважения к последователям.

5. Ну и тут паритет. Хотя я мог бы возразить таким примером:
class 
{
public function display($text)
{
if(!print ($text))
throw new Exception('Фууууу!');
}
}
но чуствую - закидают шапками ссылками на говнокод.ру
Один-один так что.

Подведем итог.

С убедительным отрывом в 3 очка в чемпионате по говнокоду пооообеждаааает ОоооооооООООооооПээээээээээ!


Есть еще попкорн у кого? :)


Спустя 1 час, 20 минут, 48 секунд (30.04.2011 - 09:22) kirik написал(а):
twin
Ух отличный пост.
Теперь можно приветствовать друг друга: "привет, говнокодер!", - "о! привет, самтакой!" :)

Вот я сидел сегодня, прогал приложение на FLEX, и поймал себя на мысли что мне ХОЧЕТСЯ писать настоящий ООП код. Вот.. и к чему-то я это говорил.. и забыл.. А! Всё таки я считаю что php не для ООП. Точнее ты можешь писать php код с использованием ООП фишек, но это будет лишь php код написанный в OOP-style. К чему я веду-то.. вот возьмём JS/AS/FLEX - здесь всё ОБЪЕКТЫ. Будь то **ML разметка, данные (массивы, json), и, собственно сами объекты. Тоесть куда ни плюнь, ты будешь работать с объектом, и именно это подразумевает использование ООП подхода. Конечно можно писать функции, но это будет похоже на "мыши плакали, кололись, но продолжали жевать кактус".
И вот я отвечу на вопрос:
Цитата (twin @ 30.04.2011 - 01:02)
Что вот это такое?
$form->setMethod('post')
    ->
setAction('/mypage')

это приведение html к объекту (как в JS/FLEX).

Вот :)

Спустя 1 час, 22 минуты, 20 секунд (30.04.2011 - 10:45) linker написал(а):
Я всё таки хотел бы, чтобы Twin прокомментировал мою работу.

Спустя 9 часов, 8 минут, 4 секунды (30.04.2011 - 19:53) twin написал(а):
С удвольствием. Если ты ответишь той же любезностью.
Двно предлагал дуэль.

Давай так. Пройдет конкурс, я выложу своё видение - ты отпишешься. Ну и соответственно я по твоей работе.

Причем сделаем это синхронно.

До подведения итогов есть время и у тебя довести работу до совершенства, и у меня сделть то, что я вижу.

Я бы даже попросил бы оценок сторонних наблюдателей.
Весьма вероятно это перевернет моё мировоззрение и на одного приверженца ООП станет больше.

Сомневаюсь.

Спустя 1 час, 24 минуты, 50 секунд (30.04.2011 - 21:18) Zerstoren написал(а):
Твин, свой пример фреймворка я привел из-за краткости содержимого. А не из-за его крутости или чего-то еще.

На счет 90%, не соглашусь - были проекты от которых я был в восторге, которые были написаны именно теми кто знают что пишут и как пишут. И стиль их кодинга отличен от моего полностью. Но тем не менее, этим разрабам поклон. Где без единого коммента все ясно.

Еще дело в том что своего кода я пишу в день не более 2-3 часов, остальное время тратится на правки чужого. И какого-то монолитного принципа у меня не сформировалось. Есть свой стиль, есть свои правила при написании. Но они уже через месяц могут быть другими по той причине что я увидел/нашел какой-то вариант который действительно лучше текущего.


На счет Зенда: пожалуй это самый бесполезный продукт в который попытались напихать всего и побольше. А спрашивается, зачем? Он весит черти сколько, что туда могли упихать так? Если сенс хотяб в 50% того кода?


Я по жизни минималист - я ненавижу растягивать на 200 строк, что можно сделать за 50. Главное чтоб качество не страдало.

Спустя 2 часа, 51 минута, 15 секунд (1.05.2011 - 00:09) kirik написал(а):
Цитата (twin @ 30.04.2011 - 12:53)
Причем сделаем это синхронно.

Присылайте результаты мну, а я уж выложу smile.gif

Цитата (Zerstoren @ 30.04.2011 - 14:18)
ненавижу растягивать на 200 строк, что можно сделать за 50

Уверен, что эти 50 можно превратить в 20, или даже в одну.. Только кроме тебя там никто не разберется. В моём велосипеде только базовая часть занимает 5кб (обслуживание конфига, роутинг и bootstrap с несколькими основными действиями). Что можно уместить в 3.8, при том чтобы код был не только write only - я не могу представить smile.gif
Если разработка не секретная, то может поделишься с сообществом?

Спустя 8 минут, 22 секунды (1.05.2011 - 00:17) memba написал(а):
ООП это способ мышления. Мне на нем удобнее

Спустя 17 минут, 38 секунд (1.05.2011 - 00:35) linker написал(а):
twin
Ок, да будет так. Единственное предложение с моей стороны, рассматривать работу так, как будто она является функциональной частью какого-то приложения.

Спустя 6 часов, 4 минуты, 40 секунд (1.05.2011 - 06:39) ApuktaChehov написал(а):
И сошлись они в неравной схватке, не на жизнь, а насмерть.

Думаю, что после всего этого, ваше отношение к ООП и процедурке не измениться.

Кто-нибудь думает иначе?

Спустя 14 часов, 24 минуты, 56 секунд (1.05.2011 - 21:04) KonstantinK написал(а):
Цитата
Думаю, что после всего этого, ваше отношение к ООП и процедурке не измениться.

Согласен но такая дуэль это же так интересно!

Спустя 7 минут, 18 секунд (1.05.2011 - 21:12) Arni написал(а):
Цитата (ApuktaChehov @ 1.05.2011 - 03:39)
И сошлись они в неравной схватке, не на жизнь, а насмерть.

Думаю, что после всего этого, ваше отношение к ООП и процедурке не измениться.

Кто-нибудь думает иначе?

Я вот планирую свою ЦМС уже скоро повторно вынести на рассмотрение. Правду сказать, нахренячил я там чуток с ООП, буду переписывать позже. Но это уже привычка, переписывать, переписывать, переписывать.

А веду я к тому что вместе с тем как растет моя ЦМС, меняется мое отношение к процедуркам, к ООП, к программированию и к миру в целом. В общем не поменяет свое мнение только тот кто ничего не делает.

Спустя 14 минут, 36 секунд (1.05.2011 - 21:26) sergeiss написал(а):
Arni - ты не озвучил, в какую сторону меняется мнение smile.gif

Спустя 1 день, 1 час, 6 минут, 42 секунды (2.05.2011 - 22:33) Vladimir67 написал(а):
Вот захотедось пару строк после виски всобачить,
т.к. с интересом читаю эту тему.
И вот почему.
Заканчиваю читать книжку Маркус Штрасер
"PHP quick & dirty". Ну, думаю для зубров, пишущих в этом топике,
там ничего нового нет, для новичков она тоже вряд ли подходит,
суть - как разумно разрабатывать вебсайты для небольших и средних
фирм. Так вот там есть небольшой раздел,посвященный CMS, OOP.
Вкратце - Хаотичное прграммирование в PHP - это плохо,
Хаотичное прграммирование в Фраймворк - это полная катастрофа.
Язык Фраймворка - надо изучать, причем чтобы действительно успешно
делать проекты - в совершенстве.
В спешке разработчик может попытаться Фраймворк и собственное программирование на PHP соединить.
И вот здесь может до самоубийства дойти.
Некоторые примеры автор приводит из CakePHP and Zend.
Что касается ООП, мнение Маркус Штрасер (Marcus Strasser)
как мне представляется, в основном совпадает с мнением Twina.
P.S. Книжка на нем. языке, хоть и называется по-английски,
не знаю, есть ли на русском.
На мой, в значительной степени дилетантский, взгляд,
книжка весьма неплохая, такого типа мне не попадалось.



Спустя 54 минуты, 46 секунд (2.05.2011 - 23:28) Arni написал(а):
Цитата (sergeiss @ 1.05.2011 - 18:26)
Arni - ты не озвучил, в какую сторону меняется мнение smile.gif

Да мне кажется что я начинаю понимать к чему клонит twin.

Вот как менялось у меня мнение.

1. Сначало я не понимал что такое ООП , и не понимал нафига оно вобще надо в ПХП, ведь это же не приложение которое после запуска становится процессом. И в этом случае ООП это сила. Потому был противником этого подхода.
2. Потом с ростом сложности системы, когда я умудрился пару раз нарваться на повторное объявление переменных (я про то что мне казалось что такой еще небыло), я понял что может ООП, это и плохо, но вот инкапсуляция это всетаки не плохо.
3. Я увлекся, и нагородил кучу связей и вызовов внутри класса. Чем добился только того что сам уже не понимаю как оно вобще нафиг работает.
4. Что-то уже переписал, что-то еще писать. Но уже более сдержанно отношусь к ООП.

Ну одним словом, в данный момент, моя цель состоит в том, чтобы в точке вызова модуля, пространство не было засорено кучей переменных. Чтобы когда уже модуль вызван, были доступны API через интерфейсы классов, с помощью которых с легкостью можна было сделать достаточно сложные действия.

Что не мало важно в ООП для пхп, это деструкторы. Память надо освобождать. Это полезно, поскольку есть ощущение что fpm скоро станет намного популярнее. А рябить unset, это не выход. Одним вызовом деструктора, интерпретатор грохнет целую кучу добра. А Бог уже розсортирует smile.gif.

Ну так вот про то к чему как мне показалось клонит twin. Сами видите, он использует классы, и он не то чтобы противник того чтобы их делать, он за. Но вот ООП, в том виде как это в С++, в пхп не будет никогда. Потому что этом припятствует святая святых серверного приложения.

Запрос-Ответ. И некогда городить кучу наследований, связей, и прочей хрени. Потому что в отличии от приложения которое загрузилось в память и работает там долго и нудно, наше уже за доли секунды будет разрушено в пух и прах. И через те-же доли секунды, все начнется опять.

Спустя 1 час, 19 минут, 7 секунд (3.05.2011 - 00:47) sergeiss написал(а):
Цитата (Arni @ 3.05.2011 - 00:28)
Запрос-Ответ. И некогда городить кучу наследований, связей, и прочей хрени. Потому что в отличии от приложения которое загрузилось в память и работает там долго и нудно, наше уже за доли секунды будет разрушено в пух и прах. И через те-же доли секунды, все начнется опять.

В одном из многочисленных холиваров на эту тему я то же самое написал smile.gif Чуть другими словами, но суть та же самая. Правда, мне для этого не надо было много работать с классами в ПХП, потому что я сколько-то поработал с классами в Си++. А придя в ПХП понял, что тут классы нужны, но не так, как в Си++. Примерно так, как ты описал.

Спустя 2 минуты, 42 секунды (3.05.2011 - 00:50) Zerstoren написал(а):
kirik
Пока секретная. Написал фреймворк для своей нужды, т.к. нужны были бешеные скорости, даже с ударом по юзабилити АПИ.

Как только я подниму свой проект, начну дорабатывать свой велосипед, там остались некоторые детали поправить. Голый скелет нужно поправить, после практического применения. Да и комментов написать тоже не мешало бы.

Вот тогда и выложу.

Спустя 8 часов, 24 минуты, 15 секунд (3.05.2011 - 09:14) linker написал(а):
Современные веб-приложения уже далеко не те, что были скажем год-два и более назад. Поэтому подходить к новому, со старыми принципами и взглядами - кощунственно. Да и веб-приложение - веб-приложению рознь.

Спустя 3 минуты, 19 секунд (3.05.2011 - 09:17) killer8080 написал(а):
Цитата (linker @ 3.05.2011 - 09:14)
Современные веб-приложения уже далеко не те, что были скажем год-два и более назад.

А что изменилось за последние год - два?

Спустя 31 минута, 22 секунды (3.05.2011 - 09:49) linker написал(а):
Много чего.

Спустя 9 минут, 17 секунд (3.05.2011 - 09:58) killer8080 написал(а):
linker
Ну просто исчерпывающий ответ blink.gif
но я так и не понял, что это за таинственные новшества такие, что произвели революцию в серверных технологиях, на концептуальном уровне smile.gif

Спустя 3 минуты, 34 секунды (3.05.2011 - 10:01) linker написал(а):
Сам подумай, функционал расширяется, а это есть усложнение разработки. Пинок дал, дальше много читаем и обсасываем.


_____________
Искусство программирования - заставить компьютер делать всё то, что Вам делать лень!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.