Кресты / Говнокод #9238 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
class set_ftp: public QObject
{
public:
    typedef class impl_set_ftp: QObject
    {
        QString url     ;
        QString login   ;
        QString password;
        QString siis    ;
        QString ssm     ;
        QString ssl     ;
        QString url_siis;
        QString url_ssm ;
        QString url_ssl ;

        friend class set_ftp;
        impl_set_ftp(QObject* p): QObject(p) {}
    } Impl;

    inline QString& url     () const {return impl->url     ;}
    inline QString& login   () const {return impl->login   ;}
    inline QString& password() const {return impl->password;}
    inline QString& siis    () const {return impl->siis    ;}
    inline QString& ssm     () const {return impl->ssm     ;}
    inline QString& ssl     () const {return impl->ssl     ;}
    inline QString& url_siis() const {return impl->url_siis;}
    inline QString& url_ssm () const {return impl->url_ssm ;}
    inline QString& url_ssl () const {return impl->url_ssl ;}

    inline void set_url     (const QString& _url     ) {impl->url      = _url     ;}
    inline void set_login   (const QString& _login   ) {impl->login    = _login   ;}
    inline void set_password(const QString& _password) {impl->password = _password;}
    inline void set_siis    (const QString& _siis    ) {impl->siis     = _siis    ;}
    inline void set_ssm     (const QString& _ssm     ) {impl->ssm      = _ssm     ;}
    inline void set_ssl     (const QString& _ssl     ) {impl->ssl      = _ssl     ;}
    inline void set_url_siis(const QString& _url_siis) {impl->url_siis = _url_siis;}
    inline void set_url_ssm (const QString& _url_ssm ) {impl->url_ssm  = _url_ssm ;}
    inline void set_url_ssl (const QString& _url_ssl ) {impl->url_ssl  = _url_ssl ;}

    set_ftp()          : QObject(0), impl(new Impl(this)) {}
    set_ftp(QObject* p): QObject(p), impl(new Impl(this)) {}
private:
    Impl* impl;
};

Код написанный человеком, считающим себя "гуру разработки программирования", а так же "активным научным деятелем".
Главная мысль глядя на это у меня - охренное тестовое задание с вопросом - укажите абсолютно все бредни в этом коде, но разумеется в более нормальной формулировке... а чО - неплохой тест...
з.ы. этот же человек никогда не пишет cpp файлы все в хедерах собачит....

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

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

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

    а может он просто дрочит на процесс, гордится собой

    кроме того, что всё тут лишнее - и ненужная инкапсуляция с геттерами/сеттерами, и impl *, возвращать неконстантную ссылку из константного метода... если без указателя, то вызывает много вопросов даже у компилятора, видать за этим и указатель! надо же бороть крестопроблемы, в самом деле!
    Ответить
  • >class impl_set_ftp
    о, а я знаю typedef!

    >class impl_set_ftp: QObject
    зачем QObject?

    >Impl* impl;
    FFFFFUUUUUU
    QScopedPointer придумали для лохов. Ъпрограммисты не используют смарт-поинтеры. Лучше пусть QObject сам заботиться об удалении impl
    Ответить
  • inline ? А в самом хедере были обьявлены макросы запрещающие перевключение кода? Потому что тут кажется взаимоисключающие параграфы.
    Ответить
  • И видимо все inline? Ну программер крут. Я понимаю Dependency Injection сейчас довольно модный тренд, но нафига его сувать туда, где он не дает никакого смысла. Кроме разве что лишних тормозов.
    Ответить
  • А еще зачем нужны set_url и прочие set_something, если url() возвращают неконстантную ссылку? Видимо, автор решил экономить на памяти, да вот только не в курсе, что Qt-контейнеры используют implicity shared
    Ответить
    • . ну вообщем цель у него такая было, а заставить его прочитать что такое implicity shared - невозможно...
      до этого он вообще все свои переменные облечал в такую ересь -
      template <class T>
      class ssm_Var
      {
      public:
      ssm_Edit edit;
      ssm_Var():edit(DEFAULT_EDIT) {}
      ssm_Var(T _var):edit(DEFAULT_EDIT), var(_var){}
      inline void set(T _var) {var = _var; } //Устанавливаем Переменную
      inline T get() const {return var;} // считываем Переменную
      inline T* link() {return &var;} // или указатель на неё
      inline T& self() {return var;} // или её же по ссылке
      private:
      T var; // Переменная, ради которой и создан весь класс
      };

      потом надоело, в проекте где это есть оставил и начал облачать уже в

      // класс с двумя переменными
      template <class T1, class T2>
      class zn_var_ab
      {
      public:
      zn_var_ab(){}
      zn_var_ab(T1 _a, T2 _b): a(_a), b(_b){}
      inline void set_a(T1 _a) {a.set(_a);}
      inline void set_b(T2 _b) {b.set(_b);}
      inline void set_ab(T1 _a, T2 _b) {a.set(_a); b.set(_b);}
      inline T1 get_a() const {return a.get();}
      inline T2 get_b() const {return b.get();}
      inline T1* link_a() {return a.link();}
      inline T2* link_b() {return b.link();}
      inline T1& self_a() {return &a.self();}
      inline T2& self_b() {return &b.self();}
      private:
      zn_var<T1> a;
      zn_var<T2> b;
      };

      template <class T>
      class zn_var_def
      {
      public:
      zn_var_def(): def(false) {}
      zn_var_def(T _var): def(true), var(_var) {}
      inline void set(T _var) {var = _var; def = true;}
      inline bool isDefined() {return def;}
      inline bool isEmpty() {return !def;}
      inline T get() const {return var;}
      inline T* link() {return &var;}
      inline T& self() {return var;}
      private:
      bool def;
      T var;
      };
      теперь перешел к описанному в самом начале....
      и все это в рамках одного проекта, все переменные в это г обвернуто...
      1.5 МБайта (!!!!!) сырцов этого ада.....
      Ответить
      • я представляю какой у него баттхёрт от того, что в С++ всё ещё нет таких нужных пропертей
        мыши кололись и плакали
        Ответить

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

Помни, guest, за тобой могут следить!

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


    8