За последние 24 часа нас посетили 20379 программистов и 1697 роботов. Сейчас ищут 1732 программиста ...

ООП vs кучка статиков vs функции в неймспейсах

Тема в разделе "Прочее", создана пользователем pistol, 22 янв 2014.

  1. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Re: Знакомьтесь, PinCMS

    И от кого или от чего защищаются приватом методы в твоих классах? И почему private, а не protected? Еще и static?

    Добавлено спустя 2 минуты 38 секунд:
    Извини, что издеваюсь :) На вопросы можешь не отвечать, просто убери классы :)
     
  2. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Re: Знакомьтесь, PinCMS

    Отцы-основатели ООП переворачиваются в гробу, глядя на "эту точку зрения". Убери классы. Убери, убери, убери :)
     
  3. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Кавычки в тегах исправил, а классы убирать не будешь, так как все продумано? Жесть.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Отцы основатели ооп переворачиваются в гробу, видя как извращены их концепции сегодня. Основа ООП - инкапсуляция, а не создание экземпляров. За сим данную тему предлагаю закрыть и всё дальнейшее рассуждание о концепциях вести в соотв. темах.

    Добавлено спустя 2 минуты 21 секунду:
    Нужно - это очень сильное слово. Функционал приватных и пабликовых методов меня устраивает. Статиками всё написано потом что пхп обрабатывает единственный запрос. Такова его природа. В случае, если бы это был не пхп, то плодились бы объекты. В данном случае это просто не требуется. Однако приват/паблик мне нравится и удобен. Я пожалуй оставлю так. Я считаю, что задача должна решаться удобными методами, а ООП ради ООП и нейспейсы ради неймспейсов - это крайности. Однако я тоже за неймспейсы. Вот такой я противоречивый фрик.
     
  5. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    А что, если я скажу, что инкапсуляция есть и в процедурном программировании?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Скажи. Только с примерами.
     
  7. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Это инкапсуляция?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нет. Это область видимости.

    А ты уверен, что не опечатался в примере своём?
     
  9. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    А если test() - это объект?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это область видимости, вне зависимости объект или нет.
     
  11. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Последний вопрос. А

    class test {
    private static function test2() {}
    }
    test::test2(); // Call to private method test::test2() from context

    - это инкапсуляция и ООП по-твоему?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это просто приватная функция. в отрыве от контекста это не инкапсуляция, а вообще ничто. Тем не менее область видимости никак не связана с инкапсуляцией, ооп и прочим. Она просто говорит где что будет видно. Внутри объекта его функция видна, а вот во вне она может быть видна или не видна благодаря паблик/приват/протектед. Вот только тогда начинает начинаться инкапсуляция. Область видимости - это факт. Квантовое состояние, которое используется при исполнении программы.

    Инкапсуляция это не просто факт, как область видимости. Это скорее идея. И она нечеткая и граница весьма зыбкая, и пляшет от задачи к задаче. Её суть состоит в том, что то, что не нужно вне объекта, не стоит и светить. И тем, кто пользуется объектом, не нужно думать о том, что там творится внутрях.
     
  13. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Я хочу сказать, что ты используешь php 5.4, но не используешь неймспейсы, пишешь костыли из мира php 4.
    Для того, что ты описал, можно использовать плюхи php 5.3 (namespace), городить классы не нужно.
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    для того, что я описал можно заюзать что угодно, включая ассоциативные массивы, заканчивая жестоким ООП всего и вся. Теги тоже можно сделать объектами, ага. Это всё очень красиво звучит на Java или C#. Но это пхп.

    С неймспейсами у меня эстетическая недружба.
     
  15. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    На нем тоже можно делать правильные и красивые вещи, в теории. Вот только никто не оценит это, все PHPисты просят поставить кавычки в атрибуты HTML кода, выводящегося в методе класса. Вступай в клуб сопротивления.

    Добавлено спустя 5 минут 44 секунды:
    ПС - инкапсуляция, полиморфизм и наследование. Все поотдельности в том или ином виде с притяжкой за уши есть и в процедурном программировании, а все вместе - есть только в ООП.
     
  16. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Ихаха... для ООП должно быть первое О, в первую очередь =)
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вы не понимаете.

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

    Если у нас есть задача типа "возьми кучу файлов и вывали в STDOUT" то тут ООП не нужен.

    Про неймспейсы: синтаксис неймспейсов удобен при создании как раз объектов.
     
  18. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    А Программировать-то как потом? :)

    Да.
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы юный максималист =)
     
  20. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    я далеко не PHPпист. а что ты имел ввиду насчёт кавычек?

    У каждого, похоже, своё мнение, от чего попереворачивались основатели в гробах. Я вот тоже не вижу смысла использовать классы без объектно-ориентированной парадигмы. Только разве для своего удобства, для работы с какой-нибудь IDE.

    Объектно-ориентированное программирование
    Ну и по мнению Алана Кёртиса (одного из основателей ООП, ныне живущего) объектно-ориентированный подход заключается в следующем наборе основных принципов:
     
  21. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    грубо говоря, все классы в исходниках это просто обертки над статическими методами. это и плюс и минус одновременно.
    плюс в том что, возможно, в рамках данной конкретной задачи, ооп и ненужно. и он заюзал классы просто как обертки над функциями. тоесть просто как ему удобно(в данный момент, без прицела на будущее).
    а минус как раз в том, что приваты и статики свяжут по рукам и ногам - если понадобиться(по какойто причине) переходить к обычным объектам, делать наследование, запускать скрипты в многопотоке...
    бытует мнение что статики работают быстрее. но из моего опыта, разница на уровне погрешности(давайте не будем уходить в холивар и делать замеры).
    делать все статиками также странно как и делать все через объекты. нужна золотая середина.
     
  22. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Внимание к мелочам и сознательное\бессознательное игнорирование более глобальных вещей.
    Правильно Лебедев говорит, сейчас в стране золотое время - конкуренции нет, требования к людям и их продукции минимальны. Попросишь не отравленную воду - и ты максималист и выскочка.
     
  23. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Что будет на выходе - не мелочь. Как реализовано - да пофиг. Если к каждому придираться, как и что он делает (с точки зрения кого-то одного), то всех надо расстрелять.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Подрастёшь поймёшь. Это всё детские разговоры о высоком качестве и идеальном коде, который нафиг никому не нужен по факту и еще реже встречается на практике.
     
  25. pistol

    pistol Новичок

    С нами с:
    24 ноя 2013
    Сообщения:
    76
    Симпатии:
    0
    Это не высокое качество и идеальный код, это нормальное качество и обычный код. Сравни код русского Битрикса и западного Мадженто и все поймешь.