1. C++ / Говнокод #13656

    +16

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void setEnabled(bool enabled)
    {
        super.setEnabled(enabled)
        if (enabled) {
            objectsArray.disable();
            return;
        }
        enable();
    }

    Запостил: ZevsVU, 23 Августа 2013

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

    • знатное
      Ответить
    • > super.setEnabled(enabled)
      Это точно c++?
      Ответить
      • Вообще это Objective-C, на скорую руку переписал на более широкую аудиторию, прошу прощение за ошибочки...
        Вот оригинал если кого интерисует

        - (void)setHidden:(BOOL)newHidden
        {
        [super setHidden:newHidden];
        if (newHidden){
        [m_bannerViewController hideBanner];
        return;
        }

        [self reload];
        }
        Ответить
        • А ну вот, т.е. вызов disable() по enabled это ваш косяк, а не автора оригинала ;)

          P.S. Исходный код смотрится не таким сраным говном, как переделанный на кресты. Я в нем что-то вообще говна не вижу, ну кроме того, что, наверное, надо бы еще else и showBanner. Ну и возможно проверку на старое состояние, х.з. как там надо по заветам объективного си.
          Ответить
        • А все-таки в чем говно в оригинале?
          Ответить
      • на Java больше похоже. Вообще super напрягает - в ++ же множественное наследование.
        Ответить
        • он ниасилил
          Ответить
        • Например так http://ideone.com/0YZEdQ :)
          Ответить
          • логично, но это подло - юзать слово super)
            Ответить
        • А в джаве нет множественного наследования?
          Ответить
          • Нет.
            Ответить
          • Им и в плюсах то пользуются редко. Ненужно оно. Юзай интерфейсы - их хоть сколько можно реализовать
            Ответить
            • В чистом виде - не нужно, но всякие Mixin'ы без него немыслимы.
              Ответить
            • почему ты решил, что ненужно, в интернете прочитал?
              Ответить
              • даже в интернете еще попадаются умные книжки
                Ответить
        • Множественное наследие не мешает иметь super. Например в Питоне. Его нет в Ц++ потому что Ц++ не предписывает как, и нужно ли вообще, делать линеаризацию. Почему не предписывает - не понятно. На первый взгляд - забыли.
          Ответить
          • В питоне тоже могут быть косяки, если метод есть в нескольких родителях.
            Ответить
            • Нет, не могут быть. Читайте про C3 linearization.
              Ответить
              • С сущностью питона раз плюнуть не заметить, что метод есть у лишнего предка и получить факап в рантайме.
                Ответить
                • Так можно не заметить что угодно. Это все равно что жаловаться на то, что можно случайно на ноль поделить.
                  Ответить
          • И он возвращает мнимый обьект со всеми методами родителей?
            Ответить
            • Вот жеж блин лень... Нет взять просто Википедию прочитать.
              Ответить
              • В википедии ничего хорошего не напишут. Просто поинтересовался, нет, так нет
                Ответить
        • А что лучше - интерфейсы или множественное наследование?
          Ответить
          • Чисто с логической - интерфейсы, ибо в реальном мире классификация по типу "кто" или "что" древовидная и без пересечений (например классификация живых существ - существо не может быть и вирусом и растением ), а интерфейсы дополняют характеристиками "какой", "что умеющий делать". Получается система, легко перевариваемая человеческим мозгом. А простота понимания - залог успеха

            Если не прав - поправите, мне интересно послушать мнение гуру в этом вопросе
            Ответить
            • > ибо в реальном мире классификация по типу "кто" или "что" древовидная и без пересечений
              Откуда инфа? Навскидку найду десяток, больше просто лень, примеров где нужны гетерархии. Но об этом уже сто раз говорилось. Например, отношение между круг и эллипс.
              Ответить
              • Каждый круг - эллипс - не каждый эллипс -круг . Круг - подкласс эллипса. Не?
                Ответить
                • Ньюфагам: http://en.wikipedia.org/wiki/Circle-ellipse_problem
                  Ответить
                  • Ну собственно та самая проблема, по которой std::vector<Derived*> нельзя передать в функцию, принимающую std::vector<Base*>...
                    Ответить
                  • Признаю свой феил. К, сожалению, я нуб
                    Ответить
      • Кстати, может есть какой-нибудь gcc-изм или расширение для такого сахарка? (имеются ввиду только случаи одиночного наследования)

        ИМХО - юзабельно было бы.
        Ответить
    • фыва
      Ответить

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