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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    // File icontact.h
    // Describes a contact in the address book
    class IContact
    {
    public:
        virtual ~IContact();
        virtual void ... 
        ... 
        void setContact(const QString& contact);
        ...
    private:
        QString m_contact;
        // ... other fields ...
    };
    
    // File icontact.cpp
    void IContact::setContact(const QString &contact)
    {
        m_contact = contact;
    }

    "Ну и че тут непонятного?" (Senior software developer, 8+ years of experience)

    Запостил: salamon_style, 11 Октября 2019

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

    • показать все, что скрытоvanished
      Ответить
    • > class IContact
      > QString m_contact;
      > void setContact(const QString& contact);
      Ох уж эти крестовые интерфейсы с ошмётками реализации…
      Ответить
      • куиик

        а что будет m_contact? он вэмбеддица в каждый файл, который его юзает?
        Ответить
        • В смысле? Нет, он будет во всех потомках IContact. Я сетую на отсутствие в крестах нормальных «интерфейсов» — или, скорее, на подобные вот монстры, мимикрирующие под интерфейсы.
          Ответить
          • Просто это надо было назвать не интерфейсом, а абстрактным классом.
            А если в классе нет полей, а все методы абстрактные - ну, тогда он и есть интерфейс, чем он ненормален?
            Ответить
          • Почему же? Чем не интерфейс из тех же C# или Java?
            class IContact
            {
            public:
              virtual ~IContact() = default;
              virtual const QString& name() const = 0;
              virtual const QString& secondName() const = 0;
            };

            Не язык плох, а те, кто на нем пишут
            Ответить
          • Тут меня вырубило как этот класс юзать. Что такое m_contact? Почему метод у IContact::setContact, а не setName, к примеру? Мне туда можно передать "Петров" или надо какую-то специально отформатированную строку / JSON запихнуть? Чем думал человек, когда писал это?
            Ответить
            • показать все, что скрытоЕсли это действительно инторфейс, то юзать его, как в IDL написано и не иначе.
              Но вообще это имплементирующий кококласс.
              Ответить
              • Есть идея, как обойти примитивную капчу для нарегивания ботов?
                У меня надёжных только 3.

                Жухрай сокрушенно качал головой, но, увидя огорчение в глазах Павла, не раздумывая, отстегнул свой маузер: — Вот тебе мой подарок. Павел не сразу поверил, что ему дарят вещь, о которой он так давно мечтал, но Жухрай накинул на его плечо ремень: — Бери, бери! Я же знаю, что у тебя на него давно глаза горят. Только ты осторожней с ним, своих не перестреляй. Вот тебе еще три полные обоймы к нему.
                Ответить
        • показать все, что скрытоvanished
          Ответить
    • показать все, что скрытоСиньоры порфаворы! С чего вы вообще взяли, что это интерфейс? Из-за кривой венгерки и публичного сеттера?
      Ответить

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