Программирование: объектное vs процедурное

Тема в разделе "PHP", создана пользователем terkin, 27 ноя 2007.

?

Какой подход к программированию вы используете

  1. Линейный

    5,1%
  2. Процедурный

    27,1%
  3. ООП упрощенный ("логический")

    32,2%
  4. ООП полнофункциональный

    35,6%
Статус темы:
Закрыта.
Модераторы: latteo
  1. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Вобщем пишу на РНР уже год а то и больше и всегда использую в своих скриптах функции, но заметил что в больших проектах чаще всего используют классы, хотелось бы что бы кто нибудь доступно объяснил чем классы лучше, или же что можно при помощи классов чего нельзя при помощи ф-ций.
     
  2. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Каждый по-своему понимает что есть классы.
    Советую книгу "PHP && MYSQL" Издательства Williams Publishing - там весьма доступно рассказано что к чему...

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

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

    Из плюсов на момент перехода на ооп для меня:
    - Упрощенные имена функций
    - Логическое разбиение кода

    Думаю, никто не возьмется в 2-х словах описать все фишки ООП. Лучше читать.. А еще лучше - читать и тут же писать.
     
    ПроФ нравится это.
  3. Randooom

    Randooom Постоялец

    Регистр.:
    31 июл 2006
    Сообщения:
    138
    Симпатии:
    38
    Не согласен с тобой Jeurey , это ты говоришь про достоинства ООП вообщем -- вобщем ООП конечно эффективней применять, сама парадигма более новая.
    НО : я считаю в пихапи лучше использовать функции, потому что, я уже убедился в 4 версии писать в стиле ООП проблемно, вылазит много непонятных косяков, причем когда запускаешь на пятой версии, все работает ПОЧТИ нормально. Можно конечно писать под пятую версию, это даже удобней, появляютсья много новых всяких полезных фич, типа мультикурла, да и ооп реализовано нормально. Но опять выступает "но": 4 версия пхп все еще актуальна и практ. все хостинги продают с 4 версией, при этом делаю пометку типа это более стабильно будет работать, кароче проблема эта глобальная, факт в том что пока лучше всего использовать пхп+функции
     
  4. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Хе-хе...

    1. Покажи код класса, который работает некорректно под четверку и работает на пятерке. Я такого не видел.
    2. Четверка отменяется, кстати... Чуть более месяца осталось - рано либо поздно все равно умрёт, как и тройка...
    3. Чем обоснованны слова
    ?
     
  5. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Хм раз тут всё так завертелось-закрутилось прошу модеров добавить опрос к теме: Что вы используете в РНР:
    1) классы
    2) ф-ции
    3) классы+ф-ции
     
  6. garcia

    garcia Прохожие

    Когда появилось ООП - все сильно возрадовались, предсказывая скорую смерть процедурному подходу. Еще ранее, во времена романтики "искусственного интеллекта" был пролог, который, как многие думали, своим изяществом, строгостью концепции и нацеленностью на решение сложных логических задач навсегда изменит лик современного программирования. И что? Кто ченить на прологе наваял из присутствующих? Процедурное программирование будет всегда, и вот почему.
    Концепция ООП хороша - она соответствует человеческому мышлению, который вычленяет из окружающего винегрета объекты, абстрагируется, (если кто не знает - с "обосраться" это слово не имеет ничего общего), выделяет классы объектов, пытается понять их свойства, поведение, сходства и различия. Эта концепция близка нашему уму. Но!
    Ведь в реале все не совсем так - все объекты - совсем разные. Не бывает двух совершенно одинаковых кружек. У каждого объекта в реале бесконечное число отличий.
    Такому положению дел больше соответствует процедурный подход - есть ситуация - есть прямое решение. Иногда нужно просто отварить картошки. Зачем тут объекты?
    Короче - нихто не победит.
    --------------------------------
    Приимущества ООП проявляются тем больше, чем больше народу занято в проекте и чем больше проект. Но - стадия проектирования сложнее.
     
  7. nomatter

    nomatter Создатель

    Регистр.:
    22 ноя 2007
    Сообщения:
    11
    Симпатии:
    0
    Полностью согласен с garcia.
    Только с опытом приходит осознание того, когда-же необходимо ООП. А так, процедурное программирование покроет все Ваши потребности.
    Задайте себе простой вопрос: Кому, или в каком еще месте понадобится класс который я собираюсь изваять?
    Для меня основное в программировании - простота и элегантность решения, как этого достичь решать Вам.
    По своему опыту имею примеры, когда мои функции перерастали в классы, - помоему это верный путь не городить лишнего.
     
  8. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197
    в общем я так понимаю что выгоднее и правильнее переходить на ооп. да?
     
  9. garcia

    garcia Прохожие

    Недостатки ООП:
    1. Для простых вещей менее удобно (с java имели дело? То ли дело Python)
    2. Ошибки в проектировании более болезненно потом аукаются. Если задача действительно сложная (да еще и в процессе написания условия задачи меняются - а так бывает!) то беда.
    Иными словами, если задача стабильна и понятна - лучше ООП. Если нет - приимущества ООП теряются - при изменении условий надо перепроектировать объектную модель. Или так: ООП больше подходит для последовательного workflow (этап за этапом) а значит, если на каком-то этапе косяк - надо возвращаться назад. Процедурный подход более фриволен.
    Если у вас в башке не сформировалась объектная модель вашей задачи - начинать программировать в объектах нельзя. А процедурно - можно уже и начинать, пробовать
     
  10. judgefog

    judgefog

    Регистр.:
    12 авг 2006
    Сообщения:
    487
    Симпатии:
    335
    при использовании классов функции никуда не уходят. Они просто идут внутри класса и зовутся методами. В ООП сделаны удобные вещи для манипуляции нужными функциями - напр. объявил сейчас, а начинку добавил позже

    туда же. Накатал функцию, протестил - вложил в класс. Нет противоречия.
     
Статус темы:
Закрыта.