Куча говна / Говнокод #25786 Ссылка на оригинал

0

  1. 1
https://www.youtube.com/watch?v=lfdAwl3-X_c

Запостил: OlegUP OlegUP, (Updated )

Комментарии (47) RSS

  • >> 44:51
    Ты не охуел ли случайно?
    Ответить
    • Уголовный розыск.
      Мы его уже взяли.
      В качестве свидетеля, последуйте за мной.
      Ответить
  • Обсирать джавовские классы, это всё равно, что избивать младенцев
    Ответить
  • Я понял, если в процедурном стиле пишут:
    $data = file_get_contents($path);

    То в "ООП" надо писать:
    $data = new FileThatOnlyCanReturnItContentAsString($path)->getContent();


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


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

      А вот что плохо, так это то, что 99% сторонников ООП на самом деле нихуя не понимают ООП.
      Они думают что если вместо

      get_petux

      написать

      new PetuxObtainer()->getPetux();

      то их код сразу станет ООПным
      Ответить
      • Ну об этом и видео. Я вообще постоянно не понмал, какой толк от инкапсуляции если пишут геттеры и сеттеры? Ну а так мужик угадал мои мысли почти.
        Ответить
          • Ну сейчас понял, если рассматривать объект как сущность имеющую свойства и полностью сокрытую от внешней среды, значит их нельзя использовать.
            Ответить
            • > если рассматривать объект как сущность имеющую свойства и полностью сокрытую от внешней среды,
              > значит их нельзя использовать.
              Как из первого утверждения следует второе? Почему я, например, не могу прочитать рид-олни свойство apple.color?
              Ответить
            • Закрывая поля объекта, ты вынужден делать логику, использующую эти поля, внутри объекта. Переименование "private" в "public" или добавление нового публичного метода - говнокод по мнению автора.
              Ответить
        • дебагер ставить чтобы:) кроме того, геттеры и сеттеры могут быть частью интфрейса

          но на самом деле в нормальных языках типа котлина и C# они сами генерятся
          только жабоёбы хуячат вручную
          Ответить
          • В видео генерация гет\сеттеров тоже обсирается.
            ОНи вообще не нужны, так как нарушают инкапсуляцию, даже не ее, а сокрытие.
            Ответить
            • > ОНи вообще не нужны, так как нарушают инкапсуляцию, даже не ее, а сокрытие.
              Фанатики не нужны. Идеально-инкапсулированные классы, полностью изолированные от внешней среды, пусть пишут ООП-цари.
              Ответить
            • хуже всего инкапусляцию нарушают открытые класы и виртуальные методы

              джава подталкивает тебя нарушать инкапсуляцию как можно чаще
              Ответить
            • я пишу из джавы)

              нативный дебагер можно натравить на обращение к памяти, но есть одно но

              хардварных точек останова немного
              остальные реализуются патчнигом кода и вставкой туды 0xCC
              Ответить
    • Можно называть объект той же подпрограммой, с еще одной областью видимости и со своим набором функций.
      А в видео говорят о том, что объект - это не просто набор данных с функциями, а сущность обладающая свойствами.
      В ПП нету наследования, хоть и есть композиция.
      В ПП нету полиморфизма.

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

      Именно поэтому я за ООП.
      Ответить
      • >В ПП нету наследования
        >В ПП нету полиморфизма.

        на самом деле есть.
        В си часто можно увидеть указатель на структуру Animal, который потом кастят в указатель на структуру Tiger.

        >В ООП ты данные определяешь в отдельном месте и не мешаешь с алгоритмом.
        Как раз наоборот.

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

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

          В си есть указатель на void, и его можно скастить в любой функции к любому типу.
          Но в C++ есть шаблоны, которые решают эту залачу в CT, и при этом выглядят более наглядно.

          Зато в си нету перегрузки функций, а это часть полиморфизма, а значит и нету виртуального наследования.

          Ну и конструкторы с деструкторами вызывающие сначала для объекта malloc не забываем писать сами.
          Ответить
          • >Так держи метод чирикнуть в базовом классе Птица,
            И потом у тебя будет 200500 классов в наследовании и все друг друга переписывают:) Особенно смешно, когда у тебя нету множественного наследования.

            >В си есть указатель на void, и его можно скастить в любой функции к любому типу.
            Да, но речь не об этом.



            >Зато в си нету перегрузки функций, а это часть полиморфизма, а значит и нету виртуального наследования.

            Ну храни в структуре указатель на функцию:)

            >Ну и конструкторы с деструкторами
            Это да, хотя это и не главное в ООП.


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

                >можешь разные сущности плодить
                вот это правда


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

                  Полностью принцип звучит же так: "Не плоди сущности без острой нужды"

                  Ну и вспомним философию UNIX:
                  Вместо одной программы которая делает все сразу лучше много программ, мелких, которые делают свое дело хорошо.
                  Ответить
      • Поторопился я, думал он предлагает создавать классы имеющие один метод, не стал смотреть до конца. Там он предлагает создавать классы имеющие например 4 публичных метода.

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

        В ответ на вопросы для примера предлагает иметь различные классы для:
        - файла возвращающего целиком свое содержимое;
        - файла возвращающего массив строк;
        - файла с произвольным доступом;
        - файла с известной кодировкой;
        - файла без кодировки.

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

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


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

        Классов для сортировок там нет случайно?
        Ответить
    • На самом деле file_get_contents умеет не только с файлом (именно поэтому я за "PHP"). Поэтому тебе придётся несколько классов создавать.
      Ответить
  • Хороший доклад. Пусть Конардяка посмотрит.
    Ответить
  • Я ебал 100500 классов 5-строчников только лишь с 1 методом.
    Ответить
    • +1

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

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8