1. Куча / Говнокод #25786

    −1

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

    Запостил: OlegUP, 30 Августа 2019

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


          Про иммутабельность согласен, но вот про отсутствие геттеров не очень, если я не могу обратиться к уже открытому файлу за путем к нему, то мне придется хранить его путь где-то снаружи, и где тогда это ваше хваленое выделение данных в отдельное место?
          Ответить
      • показать все, что скрытоvanished
        Ответить
      • показать все, что скрытоvanished
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоhttps://www.clipartmax.com/png/middle/17-172577_vladimir-putin-turkey-beak-bird-cartoon-clipart-chicken-nuggets-clipart.png
      Ответить

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