[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: И снова про ООП
denis79513
Давно я подумывал написать что-нибудь с ООП, я конечно понимаю что оно нужно для широких проектов, но я делал не ради проекта а ради практики работы с ООП.
И вот сижу я, казалось бы, самое сложное позади. Код написан, сижу довольный радуюсь, работает! Вдруг, мне в голову приходит один вопрос, зачем я все это делал? Я в тупике, как пользоваться ООП я теперь знаю и умею а вот где его применять и зачем, как-то не прет. Я сделал типо товар в интернет-магазине. При добавлении товара, создается объект который имеет свойства товара: цена, название, описание и т.д. Ну так вот, через форму заполняю свойства, потом эти свойства присваиваю объекту а потом эти свойства заношу в таблицу в БД в строчку с товаром, вопрос: Зачем создавать объект, если можно напрямую в таблицу грузить его параметры? Объясните, либо я не там применяю ООП либо я чего-то недопонял.




Спустя 11 минут, 10 секунд (23.05.2011 - 16:49) twin написал(а):
Ты не первый задаешься таким вопросом)))
Вот, изучай.

А вот статья просто супер на эту тему.

Спустя 25 минут, 55 секунд (23.05.2011 - 17:15) denis79513 написал(а):
Мда, все я не дочитал, уж слишком там много всего, но основную мысль понял: Кто-то за кто-то против. Теперь мне надо определиться за что буду я =)
Главное ООП знаю, значит крут=) Хотелось бы услышать пару внятных слов по поводу ООП от тех людей, которые его поддерживают. Кроме "У ООП очень много преимуществ" я ничего не нашел. И конкретно поясните мне тупому, вот в каких случаях его нужно использовать, на примерах. Только не нужно таких примеров: Его нужно использовать в больших проектах с большим кол-вом данных...

Спустя 8 минут, 39 секунд (23.05.2011 - 17:23) Krevedko написал(а):
ООП-это круто )

Спустя 12 минут, 42 секунды (23.05.2011 - 17:36) denis79513 написал(а):
А если серьезно?

Спустя 4 минуты, 16 секунд (23.05.2011 - 17:40) neadekvat написал(а):
denis79513, я так понимаю, единственная цель этой темы - устроить очередной холивар.
Тебе дали ссылки, на этом форуме как минимум несколько больших обсуждений.
Не начинать же новое каждый раз, когда кому-то вломы прочитать уже написанное.

Спустя 2 минуты (23.05.2011 - 17:42) alex12060 написал(а):
neadekvat

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

Так что, не надо сразу бросаться на ТС, может у него после прочтения возникнут вопросы по поводу прочитанного и он что-то новое уяснит..

Спустя 6 минут, 38 секунд (23.05.2011 - 17:49) denis79513 написал(а):
Да мне не нужно очередное обсуждение ООП я его и там начитался вдоволь, вы просто мне покажите пару примеров кода или просто объясните на словах на примерах где его нужно использовать. Или объясните что я не так сделал в своем примере.

Спустя 2 минуты, 44 секунды (23.05.2011 - 17:52) Krevedko написал(а):
а где пример ?

Спустя 1 минута, 37 секунд (23.05.2011 - 17:53) denis79513 написал(а):
Цитата
Я сделал типо товар в интернет-магазине. При добавлении товара, создается объект который имеет свойства товара: цена, название, описание и т.д. Ну так вот, через форму заполняю свойства, потом эти свойства присваиваю объекту а потом эти свойства заношу в таблицу в БД в строчку с товаром, вопрос: Зачем создавать объект, если можно напрямую в таблицу грузить его параметры?

Спустя 1 минута, 35 секунд (23.05.2011 - 17:55) Krevedko написал(а):
теперь можно создать товар, который имеет свойства этого товара + какие-то еще через наследование )

Спустя 2 минуты, 2 секунды (23.05.2011 - 17:57) denis79513 написал(а):
Цитата (Krevedko @ 23.05.2011 - 14:55)
теперь можно создать товар, который имеет свойства этого товара + какие-то еще через наследование )

Ну а толку что еще какой-то товар будет иметь эти же свойства все равно мне придется эти свойства сохранять в таблице в БД?

Спустя 17 минут, 41 секунда (23.05.2011 - 18:15) Krevedko написал(а):
эти же свойства + какие-то еще

Спустя 5 минут, 48 секунд (23.05.2011 - 18:20) denis79513 написал(а):
Цитата (Krevedko @ 23.05.2011 - 15:15)
эти же свойства + какие-то еще

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

Спустя 7 минут, 31 секунда (23.05.2011 - 18:28) Krevedko написал(а):
что ты привязался к таблице. есть товар-лодка.
ты из нее сделал лодку на веслах и лодку моторную.

Спустя 1 минута, 46 секунд (23.05.2011 - 18:30) inpost написал(а):
denis79513
На нашем форуме ты не получишь точный ответ, так же как и везде. Можно сайты и так и так писать. Кому как больше нравится, выбирай для себя нужную позицию, та будет тебе легче.

Спустя 14 минут, 25 секунд (23.05.2011 - 18:44) denis79513 написал(а):
А толку создавать объект присваивать ему свойства если при переходе на другую страницу эти свойства сбросятся.

Спустя 7 минут, 27 секунд (23.05.2011 - 18:51) Greg1978 написал(а):
Цитата (denis79513 @ 23.05.2011 - 15:44)
А толку создавать объект присваивать ему свойства если при переходе на другую страницу эти свойства сбросятся.

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

Спустя 5 минут, 23 секунды (23.05.2011 - 18:57) inpost написал(а):
Greg1978
Отладку меньше, проектирование - больше smile.gif Так что палка в 2 конца, свои плюсы и свои минусы.

Спустя 3 минуты, 43 секунды (23.05.2011 - 19:01) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 13:49)
Ты не первый задаешься таким вопросом)))
[URL=http://phpforum.ru/index.php?showtopic=27332&'>Вот, изучай.</a>

<a href='http://www.blogerator.ru/page/oop_why-objects-have-failed]А вот статья[/URL] просто супер на эту тему.

Мне хотелось бы по Вашему посту, по каждому пункту аргументированные и обоснованные ответы а не "голословные" высказывания "как бы не так любой может расширить функцию", я если честно даже представить себе не могу как можно расширить процедуру.
Ваш пост просто, с моей точки зрения крик "религиозного спича" не более smile.gif

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

Спустя 3 минуты, 20 секунд (23.05.2011 - 19:04) Greg1978 написал(а):
Цитата (inpost @ 23.05.2011 - 15:57)
Greg1978
Отладку меньше, проектирование - больше smile.gif Так что палка в 2 конца, свои плюсы и свои минусы.

Не будьте как twin smile.gif
Для искушённого архитектора в ОО проектировании, не программировании, создать связку отладка - объект понадобиться не более чем спроектировать алгоритм тех же функций в процедурной парадигме, да ещё с такими уже приспособленными IDE. В конце концов этот класс можно использовать хоть всю жизнь

Спустя 4 минуты, 19 секунд (23.05.2011 - 19:08) inpost написал(а):
Greg1978
А кто говорит, что я против классов? Я говорю, что типичный процедурный на классах имеет свои плюсы и минусы.

Спустя 38 секунд (23.05.2011 - 19:09) Greg1978 написал(а):
Цитата (inpost @ 23.05.2011 - 16:08)
Greg1978
А кто говорит, что я против классов? Я говорю, что типичный процедурный на классах имеет свои плюсы и минусы.

Не без этого smile.gif

Спустя 2 минуты, 13 секунд (23.05.2011 - 19:11) twin написал(а):
Цитата
Не будьте как twin

Это почему?
Цитата
Мне хотелось бы по Вашему посту, по каждому пункту аргументированные и обоснованные ответы
Там 52 страницы обоснований. Читать лень или уверенность, что обоснований нет?

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

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

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

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

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

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

Вернее тут тоже есть встроенные классы. К примеру библиотека mysqli или тот же Exception. Однако это мизер, и поборникам ООП в PHP приходится самим изобретать велосипеды, гордо называемые фреймворками.

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

Вобщем то в PHP нет таких задач, которые нельзя решить процедурно.
Более того, в PHP нет таких задач, которые нельзя решить процедурно более эфективно, чем объектным программированием. Если конечно это задачи не ради самого ООП.

Спустя 11 минут, 30 секунд (23.05.2011 - 19:23) Greg1978 написал(а):
Цитата
Пытаются привести в пример собаку, свойства которой - шерсть хвост и четыре лапы, методы - лает и кусает, наследник - щенок, который еще и писается.

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

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


Я Вас, наконец то понял, я действительно сожалею что Вы смотрите на эту парадигму именно с точки зрения этой цитаты, она присуща новичку не более, так как эти метафоры предлагают именно самыми азами.
(Кстати почитайте Макконнелла, про метафоры, которые могут дать понимание а могут сильно навредить, наверное как в Вашем случае).

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

предоставляет всем слоям проекта более гибкую управляемость вплоть до разделения труда (я думаю аргументировать здесь не стоит), а как известно разделение труда это большой шаг к производительности процесса.

Спустя 5 минут, 47 секунд (23.05.2011 - 19:28) inpost написал(а):
Greg1978
А разве распределением труда не MVC всякие должны заниматься?

Спустя 5 минут, 27 секунд (23.05.2011 - 19:34) Greg1978 написал(а):
Цитата (inpost @ 23.05.2011 - 16:28)
Greg1978
А разве распределением труда не MVC всякие должны заниматься?

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

Распределение труда в моём контексте это использование разных уровней разработчиков (например), если в методологии RUP то эти уровни можно варьировать в определённый момент по разному при этом экономить соответствующие ресурсы.

Этим занимаются менеджеры и архитектора.

Спустя 17 минут, 4 секунды (23.05.2011 - 19:51) twin написал(а):
Цитата
Как я уже выше говорил

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

предоставляет всем слоям проекта более гибкую управляемость вплоть до разделения труда (я думаю аргументировать здесь не стоит), а как известно разделение труда это большой шаг к производительности процесса.


Опять 25. Да я не против парадигмы, как таковой. Я просто не вижу выгоды от неё именно в PHP.

Вот возьмем к примеру тот же Ruby. Там огромная куча встроенных классов, на все случаи жизни. И писать на нем необъектно не выйдет. Вернее это возможно, но будет выглядеть так же смешно, как и ООП в PHP

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

Цитата
я действительно сожалею что Вы смотрите на эту парадигму именно с точки зрения этой цитаты, она присуща новичку не более, так как эти метафоры предлагают именно самыми азами.
Это очень громкое заявление. Так говорят люди, совершенно незнающие предмета. Вернее знающие его однобоко. Раз Макконнелл сказал так, значит все остальные - дилетанты.

А вот допустим совсем не дилетант думает совершенно иначе. И таких очень много.

Снимите розовые очки наконец то и спуститесь на землю. Не Бога вы за бороду поймали с этим ООП а просто схватились за модную струю. Куда ведет - не важно, главное в этом направлении плывет большинство. А спроси у любого - почему? Штампованные ответы наподобие тех, которые сейчас высказывались в качестве аргумента за.

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

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

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

А организовать разделение труда вполне возможно и без этих безобразий. Тому есть масса подтверждений. Тот же softtime к прмеру взять. Там ООП не очень то в чести, а организация - позавидовать.

Спустя 14 минут, 4 секунды (23.05.2011 - 20:05) Greg1978 написал(а):
Цитата
Более того, в PHP нет таких задач, которые нельзя решить процедурно более эфективно, чем объектным программированием. Если конечно это задачи не ради самого ООП.


Есть, опять же тестирование на уровне объектных модулей куда гибче процедурных. Аргументирую smile.gif
Начну с того что есть в методологии RUP такой термин и задача как "идеи тестирования", если исходить из этой цели можно написать картину для обоих парадигм:

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

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

С ув. Greg1978 smile.gif

Спустя 4 минуты, 15 секунд (23.05.2011 - 20:09) Greg1978 написал(а):
Цитата
Тот же самый ZEND фреймворк. Много он упростил? Наинкапсулировал сложностей и тут же нарожал кучу гораздо более других. Какая нафиг управляемость, какая производительность, если вместо одного мануала приходится курить два?


Кстати о фреймворках, я не знал JS и не знаю его досконально до сих пор, но jQuery даёт мне в руки мощный инструмент не зная на чём он построен. Что это даёт?
Я не зная языка программирования (это уже снижает мою квалификацию), но фреймворк я в принципе изучил дней эдак за 3 - 4, его так сказать мануал покурил, и я могу свободно использовать его в своих проектах. Так что же нам дал фреймворк, моё изучение JS до кваифицированного состояния минимум пол года или ммаксимум недели вкуривания мануала?

Ясное дело что функционализм ведёт к упрощению, ну и минус к гибкости.

Спустя 3 минуты, 52 секунды (23.05.2011 - 20:13) Greg1978 написал(а):
Цитата
А иначе никакая
Цитата
управляемость проектом для любого слоя команды, будь он менеджер, архитектор, разработчик.
не получится. Придется раз за разом начинать все снуля, обучая всю цепочку персонала новым правилам.


Как говорил один из персонажей кинофильма "гастите" smile.gif
Если Вы в каждом проекте используете разные методологии управления проектами ну тогда дело Ваше.
Не надо обучать так как язык программирования здесь полностью абстрагирован, а PHP писать в процедурном стиле исключительно из за того что он это позволяет, ещё раз "гастите" smile.gif
ООП парадигма, ещё раз, нацелена на эффективное командное разделение с экономией ресурсов и времени.

Спустя 11 секунд (23.05.2011 - 20:13) inpost написал(а):
Greg1978
Ограниченные лишь возможности. - это насчет jQuery.

Спустя 3 минуты, 40 секунд (23.05.2011 - 20:17) twin написал(а):
Цитата
В результате "упакованный" алгоритм или функционал проверяется намного с больших сторон чем функционал упакованный в одну функцию, за счёт доступа к промежуточным данным - свойствам (состояние объекта). Согласитесь чем разносторонней тест тем он более эффективен в отладке и "поимке" дефектов.

Не вижу препятствий сделать такой тест для процедурки.

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

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

Тоесть идет прямая потеря времени на проектирование того, что повторно использовать практически невозможно.

Либо это будет фреймворк. А фреймворк хорош только в прикладных языках (да и то спорно). В веб-программировании это зло. Аргументов тут на форуме полно. Повторяться лень.

PS javascript - прикладной язык. Пример с jQuery некорректен.

Спустя 7 минут, 20 секунд (23.05.2011 - 20:24) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:17)
Цитата
В результате "упакованный" алгоритм или функционал проверяется намного с больших сторон чем функционал упакованный в одну функцию, за счёт доступа к промежуточным данным - свойствам (состояние объекта). Согласитесь чем разносторонней тест тем он более эффективен в отладке и "поимке" дефектов.

Не вижу препятствий сделать такой тест для процедурки.

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


Дайте хотя бы один многосторонний тест модуля.

На счёт связей, странно как то а что в процедурном языке не вызываются функции нижнего уровня высшим уровнем. Это и есть, если по секрету smile.gif , жёсткие связи, понятное дело что они облегчаются Dependency Inversion (инверсией зависимостей), так такие же связи и в ООП (это не оспоримо).
Если продолжить далее по теме взаимосвязей в ООП намного это более стандартизировано (а это так же уменьшает квалификацию разработчика), как, да обычными паттернами, что не скажешь в процедурном языке, стандартов де факто в них нет . Кстати и та и другая парадигма стремится к наименьшим коэффициентам как входных так и выходных связей на уровне модуля.

Спустя 4 минуты, 42 секунды (23.05.2011 - 20:29) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:17)
PS javascript - прикладной язык. Пример с jQuery некорректен.


Ок не буду спорить и всё же это никак не касается свойств языка.
Кстати приставка Script говорит о языке что он скриптовый, как и PHP.

Привожу пример другого фреймворка YII.
Не разбираясь в ОО - проектировании, именно проектировании а не прграмировании, люди его мануал "укуривают" максимум за неделю, если конечно человек желает его использовать. Не ужели не верится что функционализм ведёт к упрощению, но понятное дело не к гибкости. В плане последнего многим это никак не нужно потому что они не проектируют в ООП они на нём пишут с помощью того же фреймворка. Используя специфицированные скафолдеры пишется на нём ещё быстрее. smile.gif
Цитата

А фреймворк хорош только в прикладных языках (да и то спорно)

Камень в огород Ruby и Python smile.gif

Спустя 12 минут (23.05.2011 - 20:41) twin написал(а):
Цитата
Дайте хотя бы один многосторонний тест модуля.
Дайте модуль, дам тест. smile.gif Я могу с той же просьбой обратиться.
Цитата
Если продолжить далее по теме взаимосвязей в ООП намного это более стандартизировано, как, да обычными паттернами, что не скажешь в процедурном языке, стандартов де факто в них нет.

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

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

Я не буду сползать с темы ООП на тему фреймворков. Это другая тема. Такая же спорная. Одно скажу - ООП без фреймворка в PHP никакого прироста ни производительности труда, ни производительности приложения не несет.

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

Спустя 4 минуты, 42 секунды (23.05.2011 - 20:46) Krevedko написал(а):
эх...мне понравился игнайтер. понял за 1 день, потом сидишь и только к методам обращаешься. данные передал, в ответ все, что нужно получил. инкапсуляция епт )
куча уже готовых классов. тут тебе и пагинатор, тут тебе и аплоадер, ресайзер фоток, валидатор формы, работа с базой...
знать надо только название метода, какие параметры надо передавать и что получаешь в ответ. все остальное фреймворк сделает за тебя. такая лень наступила скажу я вам

ЗЫ А вообще я пью пиво )

Спустя 22 секунды (23.05.2011 - 20:46) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:41)
Одно скажу - ООП без фреймворка в PHP никакого прироста ни производительности труда, ни производительности приложения не несет.


Опять Вы навязываете неопределённое мнение утверждением (новичок прочитав скажет "а да да, правду говорит"). Просто если Вы создаёте утверждение Вы его должны аргументировать, а это как я и писал всё слова. smile.gif

Цитата
Дайте модуль, дам тест.  Я могу с той же просьбой обратиться.


По меньшей мере странно, не я ж сторонник процедурного подхода.
А если Вам нужен тест для класса так это пожалуйста smile.gif

Спустя 2 минуты, 37 секунд (23.05.2011 - 20:49) Greg1978 написал(а):
Цитата (Krevedko @ 23.05.2011 - 17:46)
эх...мне понравился игнайтер. понял за 1 день, потом сидишь и только к методам обращаешься. данные передал, в ответ все, что нужно получил. инкапсуляция епт )
куча уже готовых классов. тут тебе и пагинатор, тут тебе и аплоадер, ресайзер фоток, валидатор формы, работа с базой...
знать надо только название метода, какие параметры надо передавать и что получаешь в ответ. все остальное фреймворк сделает за тебя. такая лень наступила скажу я вам

ЗЫ А вообще я пью пиво )

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

biggrin.gif

Кстати, недавно один человек мне сказал, "А программист и должен быть ленивым, не в плане работы а что бы создавать себе простые инструменты" smile.gif а "не косить сено в противогазе ..." smile.gif

Спустя 7 минут, 2 секунды (23.05.2011 - 20:56) twin написал(а):
Цитата
Просто если Вы создаёте утверждение Вы его должны аргументировать, а это как я и писал всё слова.

Читаем в аттаче. Там достаточно аргументов и методологий. И написано это людьми, имеющими мировые имена.

Цитата
А программист и должен быть ленивым, не в плане работы а что бы создавать себе простые инструменты
Ключевое слово - создавать)))
А кстати ООП по словам Стерлинга Хьюза
Цитата
состоит из превращения уже имеющихся задач в новые. И уже только потом дело доходит до их решения.
Так что тут фиг знает, кто больше потеет.)

Спустя 15 минут, 49 секунд (23.05.2011 - 21:11) Greg1978 написал(а):
<?php

/**
* Generated by PHPUnit on 2011-05-19 at 17:58:27.
*/

class TestTest extends PHPUnit_Framework_TestCase
{
/**
* Модуль нижнего уровня
*
@var object
*/

protected $object;

/**
* Используемая стратегия
*
@var
*/
protected $strategy;

/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/

protected function setUp()
{
// Возможность создания фикстур

// Эмуляция передаваемых параметров

$this->params = null;
$this->object = new Object($this->X, $this->Y, $this->D);

// Дополнительные настройки для определённого теста
}

/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/

protected function tearDown()
{
// Возращение фикстур в первоначальное состояние и после тестовых функций
}

private function getParamsX()
{
return $this->object->X;
}

private function getParamsY()
{
return $this->object->Y;
}

private function getParamsD()
{
return $this->object->D;
}

protected function testAlgoritm1()
{
// Создание условий теста
$obj = $this->algoritm1();

$this->assertEquals(null, $this->getParamsX());
$this->assertNotEquals('test', $this->getParamsY());
$this->assertEquals($this->getParamsD(), true);

$starategy = new TestClassStrategy();
$strategyDetect = $strategy->algoritm2();
if($starategy instanceof Strategy)
{
$this->assertTestAlgoritm($strategyDetect);
}
}


// И так далее по документу "Idea Tests"
}
?>


и это только малая толика того что можно проверить в разный момент времени.

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

Спустя 3 минуты, 19 секунд (23.05.2011 - 21:15) Greg1978 написал(а):
Я ещё не скачивая файл уже написал что это и есть академическая задача smile.gif как в плане взаимосвязей так и в плане плюсов и минусов парадигм.

Просто я больше обращаю на проектирование не со стороны "науки" а со стороны как качественно (и в плане разработки ПО) и эффективно зарабатывать деньги. Одними решениями задач сыт не будешь smile.gif

Спустя 11 минут, 17 секунд (23.05.2011 - 21:26) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 17:56)
Цитата
Просто если Вы создаёте утверждение Вы его должны аргументировать, а это как я и писал всё слова.

Читаем в аттаче. Там достаточно аргументов и методологий. И написано это людьми, имеющими мировые имена.

Цитата
А программист и должен быть ленивым, не в плане работы а что бы создавать себе простые инструменты
Ключевое слово - создавать)))
А кстати ООП по словам Стерлинга Хьюза
Цитата
состоит из превращения уже имеющихся задач в новые. И уже только потом дело доходит до их решения.
Так что тут фиг знает, кто больше потеет.)

Кстати об аттаче, не ужели до сих пор используется "водопадный процесс", кстати на нём статья и основывается. Однако smile.gif мы уже далеко за рубежом 2000 года, уже давно рулят другие методологии более эффективные. Вы смотрели год литературы сией статьи?

Спустя 10 минут, 55 секунд (23.05.2011 - 21:37) twin написал(а):
Цитата
Просто я больше обращаю на проектирование не со стороны "науки" а со стороны как качественно (и в плане разработки ПО) и эффективно зарабатывать деньги. Одними решениями задач сыт не будешь


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

Кто-то приоритетным считает заработать сиюсекундную копейку или устроиться на работу клепать визитки на фреймворке, а кто-то хочет стать Разработчиком. И ему как минимум нужно понять, какие плюсы и какие минусы у разных подходов, чтобы выбрать для себя нужный путь.

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

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

Спустя 5 минут, 34 секунды (23.05.2011 - 21:43) twin написал(а):
Цитата
Однако  мы уже далеко за рубежом 2000 года, уже давно рулят другие методологии более эффективные.

Теперь моя очередь - это голословно. Хотелось бы ознакомиться хоть с одной в противовес.

Спустя 13 минут, 23 секунды (23.05.2011 - 21:56) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 18:43)
Цитата
Однако  мы уже далеко за рубежом 2000 года, уже давно рулят другие методологии более эффективные.

Теперь моя очередь - это голословно. Хотелось бы ознакомиться хоть с одной в противовес.

Ок, может я и отошёл от темы и зацепил Вас чем то извините. И тем не менее Вы не пресекли дискуссию smile.gif
К цитате, как Вы не знаете инкрементных, не инкрементных, гибких методологий?

Я уже приводил одну из них, базирующейся на более "старой" UP - это RUP.
Далее - XP и другие agile методики, OpenUP, Scrum, MSF (microsoft foundation) и это только одни из известных, но "водопадный процесс" уже почти потерял силу, он остаётся только в корпоративных "монстрах" и то уже теряет и там силу. Извините опять за оффтоп.
Если Вы используете "водопадный процесс" тогда становится ясно почему Вам импонирует процедурный стиль проектирования.

Спустя 2 минуты, 27 секунд (23.05.2011 - 21:58) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 18:37)
Цитата
Просто я больше обращаю на проектирование не со стороны "науки" а со стороны как качественно (и в плане разработки ПО) и эффективно зарабатывать деньги. Одними решениями задач сыт не будешь


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

Меня наверное не слышно smile.gif
Цитата
а со стороны как качественно (и в плане разработки ПО)


Кстати Вы так и не ответили на мой вопрос по поводу тестирования и наследования процедур.

Спустя 8 минут, 31 секунда (23.05.2011 - 22:07) Greg1978 написал(а):
Цитата (twin @ 23.05.2011 - 18:37)
Именно такой вопрос задал топикстартер
Цитата
Зачем создавать объект, если можно напрямую в таблицу грузить его параметры? Объясните, либо я не там применяю ООП либо я чего-то недопонял.

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

Возможно smile.gif
Но это Ваше понимание сути этой дискуссии не навязывайте её другим.
Контекст мануалов и их изучения немного отошёл от темы но не совсем.

Спустя 34 секунды (23.05.2011 - 22:07) T1grOK написал(а):
Сколько уже можно плодить эти темы?! Одно и то же, что лучше черное или белое!!!

Спустя 14 минут, 16 секунд (23.05.2011 - 22:22) sergeiss написал(а):
Цитата (denis79513 @ 23.05.2011 - 19:44)
А толку создавать объект присваивать ему свойства если при переходе на другую страницу эти свойства сбросятся.

Можно, почему же нельзя smile.gif Есть такая штука, как сериализация (функции serialize и unserialize). И еще читай про "магические" методы классов __sleep и __wakeup - как раз они отвечают за сериализацию и восстановление данных.

--------------------

twin - а не провести ли конкурс wink.gif на тему: решение задачи 2-мя методами: процедурно и на ООП. Задача одна и та же, но 2 решения обязательны. Оцениваться должны оба решения. Только сама задача должна быть несложная, иначе участников конкурса не найдется ни одного.

------------------

А что касается сравнения "использования фреймворков" VS "своя разработка"... Я чуть-чуть по-другому поясню мысль Твина. Здесь разница как между подготовкой водителей в обычной автошколе и подготовкой гонщика-раллиста. На первое требуется меньшее время, в результате получаем достаточно быстро. Водитель умеет привести машину (напичканную электроникой, которая ему помогает на каждом шагу) из п.А в п.Б, избегая аварий и не создавая аварий.
На второе, т.е. на подготовку раллиста, требуется больше времени и ресурсов. Но в результате получается водитель, который реально "чувствует" машину и может ею управлять в различных ситуациях. В том числе на грани срыва в неуправляемое движение, но не переходя эту грань. В то время как обычного водилу страхует электроника и просто не дает ему добраться до критического режима.

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

Спустя 6 минут, 34 секунды (23.05.2011 - 22:28) Greg1978 написал(а):
Цитата (sergeiss @ 23.05.2011 - 19:22)
Вот в терминах программирования фреймворки - это обычный водитель на современной, нашпигованной электроникой машине, а разработчик (или лучше Разработчик) - это супер-профи водитель, которому электроника только мешает, он знает и чувствует машину очень хорошо.

Не видел не профессионального гонщика сразу севшего в машину без электроники.
Или есть другой какой то метод сразу стать профессионалом. Всегда будут разные уровни квалификации и сказать словами стиха "профессии квалификации разные нужны" smile.gif

Спустя 2 минуты, 56 секунд (23.05.2011 - 22:31) twin написал(а):
Цитата
К цитате, как Вы не знаете инкрементных, не инкрементных, гибких методологий?
Скузми, тут уже я не так выразился. Я имел ввиду методологию сравнения, а не разработки. Иначе получается, что на мои аргументы (пусть даже кажущиеся устаревшими, хотя ооп оопешнее шибко то не стало), ничего не приводится в противовес, а о моей голословности было заявлено.
Я сказал, что ооп без фреймворка не дает прироста в производительности. Это моя точка зрения. Потребовались аргументы - я предоставил. Не в защиту, а именно как аргумент. Ибо не вижу никаких поводов мне защищаться. Есть повод сравнивать.

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

Цитата
Кстати Вы так и не ответили на мой вопрос по поводу тестирования и наследования процедур.

А что я должен ответить? Что я при процедурном подходе не смогу унследовать класс для проведения тестов? Там совсем другие способы тестирования. С теми же результатами.

Кстати говоря, как сей класс использовать в отрыве от PHPUnit_Framework?

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

Только причем тут ООП парадигма вообще?

Спустя 7 минут, 18 секунд (23.05.2011 - 22:39) sergeiss написал(а):
Цитата (Greg1978 @ 23.05.2011 - 23:28)
Не видел не профессионального гонщика сразу севшего в машину без электроники.

Не понял фразу....

Спустя 2 минуты, 54 секунды (23.05.2011 - 22:41) twin написал(а):
Цитата
Но это Ваше понимание сути этой дискуссии не навязывайте её другим.

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

Ради Бога - аргументируйте. А сказать, что
Цитата
Вы смотрите на эту парадигму именно с точки зрения этой цитаты, она присуща новичку не более,
- это тоже самое, что сказать - подрастешь, узнаешь. Подрос я давно)

Спустя 3 минуты, 27 секунд (23.05.2011 - 22:45) Greg1978 написал(а):
Ладно это уже как Вы сами сказали темы не касается.
Просто в статье указывают своё мнение а не утверждение, может почувствуете разницу, читают её не только люди с опытом.

К слову я Вам столько аргументов привёл, хм странно, а Вы до сих пор говорите
Цитата
Там совсем другие способы тестирования. С теми же результатами.


А примеров нет, что бы с теми же результатами.

С phpunit привёл пример так как он один из известных причём уже ставший стандартом.

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

Только причем тут ООП парадигма вообще?


Вот это в точку. Процедурный с ООП.

Ок, ещё раз извините smile.gif спокойной ночи!

Спустя 18 минут, 39 секунд (23.05.2011 - 23:04) twin написал(а):
Цитата
А примеров нет, что бы с теми же результатами.

Так и тут нет примеров. Есть выдернутый из контекста фреймворка класс тестирования, который совершенно излишен и никак не стандартизирован.
Цитата
С phpunit привёл пример так как он один из известных причём уже ставший стандартом.
Первый раз о таком слышу, каким еще стандартом? Для кого?

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

Так что это никакой не плюс.

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

И по второй ссылке не все так просто.

А меня осадили однозначно. Не будьте таким как twin... Да почему это?
Мне моя позиция и положение нравятся, почему не быть таким... smile.gif

Цитата
Вот это в точку. Процедурный с ООП.

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

PS И Вам добрых снов.

Спустя 2 часа, 33 минуты, 30 секунд (24.05.2011 - 01:37) Админ написал(а):
Я любитель и больше эникейщик нежели программист. Был случай - я делал простенький сайт и решил, в качестве эксперимента, прикрутить ООП к этому делу, потом плюнул и переписал всё это хозяйство на процедрку. PHP тем и ценен, что ООП там по большему счёту не нужно.

Спустя 7 часов, 1 минута, 6 секунд (24.05.2011 - 08:38) linker написал(а):
twin
По поводу мизерного количества классов, почитай про SPL.
Быстрый ответ:

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