1. Список говнокодов пользователя g26g

    Всего: 4

  2. C++ / Говнокод #3200

    +116

    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
    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
    45. 45
    class DllContainer
    {
      DllContainer()
      {
        // тут грузятся дллки в количестве N.
        // LoadLibrary() + некоторые операции
      }
      
      ~DllContainer()
      {
        // FreeLibrary() и т.п.
      }
    
      template <class T>
      T* GetComponent(ComponentID id)
      {
        // аналог QueryInterface.
        // ищет компонент, проверяет можно ли статик_кастить
        // и вертает указатель нужного типа
      }  
    };
    
    class ComponentUser
    {
      void Method1()
      {
        DllContainer loader;
        SomethingDoer* comp = loader.GetComponent<SomethingDoer>(ID1);
        comp->DoSomething();
      }
      
      void Method2()
      {
        DllContainer loader;
        SomethingElseDoer* comp = loader.GetComponent<SomethingElseDoer>(ID2);
        comp->DoSomethingElse();
      }
      
      void MethodN()
      {
        DllContainer loader;
        ShitPerformer* comp = loader.GetComponent<ShitPerformer>(IDN);
        comp->PerformSomeShit();
      }
    };

    недавно обнаружил код примерно такого плана.
    крупный коммерческий проект...

    g26g, 12 Мая 2010

    Комментарии (49)
  3. C++ / Говнокод #1886

    +60.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void AcquireSomething(..., boost::shared_ptr<Something> out)
    {
      ...
      out.reset(new Something());
    }

    жесть

    g26g, 23 Сентября 2009

    Комментарии (9)
  4. C++ / Говнокод #1865

    +64.2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    ReturnType SomeFunction(...)
    {
      ...
      {
        Mutex mutex;
        Mutex::ScopedLock lock(mutex);
        ...
      }
      ...
    }

    убер синхронизация

    g26g, 18 Сентября 2009

    Комментарии (7)
  5. C++ / Говнокод #1851

    +52.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void SomeFunction(SomeClass* cls)
    {
        std::auto_ptr<SomeClass> tmp(cls);
        SomeObject.SomeMethod(tmp.release());
    }

    несколько раз видел такое в разных вариациях (поэтому вместо копи-пасты - абстракция).
    смысл сей конструкции упорно ускользает от меня :)

    g26g, 16 Сентября 2009

    Комментарии (22)