1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #12936

    +18

    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
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    class Mutex
    {
      HANDLE m_Mutex;
    public:
      Mutex()
      {
        m_Mutex = CreateMutex(0, false, 0);
      }
    
      ~Mutex()
      {
        ReleaseMutex(m_Mutex);
        CloseHandle(m_Mutex);
      }
    
      void Lock()
      {
        auto lv_WaitResult = WaitForSingleObject(m_Mutex, 10000);
        assert(lv_WaitResult != WAIT_TIMEOUT);
      }
    
      void Unlock()
      {
        ReleaseMutex(m_Mutex);
      }
    };
    
    
    template<int C>
    struct GLocker
    {
      static Mutex m_Mutex;
    };
    template<int C>  Mutex GLocker<C>::m_Mutex;
    
    class Locker
    {
      Mutex *m_Mutex;
    
    public:
      Locker(Mutex &_Mutex)
      {
        m_Mutex = &_Mutex;
        m_Mutex->Lock();
      }
    
      virtual ~Locker()
      {
        m_Mutex->Unlock();
      }
    };
    
    
    class ThreadCreator
    {
    protected:
      static void NewThread(void *_Func)
      {
        (*(std::function<void()>*)_Func)();
        delete (std::function<void()>*)_Func;
      }
    
    public:
      static ThreadCreator g_ThreadCreator;
    
      HANDLE operator=(const std::function<void()> &_Func)
      {
        std::function<void()> *lv_Func = new std::function<void()>(_Func);
        return (HANDLE)_beginthread(ThreadCreator::NewThread,0,(void*)lv_Func);
      }
    };
    ThreadCreator ThreadCreator::g_ThreadCreator;
    
    
    #define LOCK const Locker  _Lock##__LINE__##__COUNTER__ = GLocker<9000 + __COUNTER__>::m_Mutex // 9000 является запасом для пользовательских номеров.
    #define LOCK_EX(Port) const Locker  _Lock##__LINE__##__COUNTER__ = GLocker<Port>::m_Mutex // блокирует определённый мьютекс, полезно когда нужно делать синхронизацию из разных мест.
    
    #define GO_FUNC ThreadCreator::g_ThreadCreator = 
    #define GO_EX(...) GO_FUNC  [__VA_ARGS__]() mutable -> void
    #define GO GO_FUNC  []() -> void

    Подсказка сайта:
    http://www.gamedev.ru/code/tip/tread_creation

    LispGovno, 25 Апреля 2013

    Комментарии (26)
  3. Python / Говнокод #12880

    −97

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    @render_to_json()
    def view(request):
        # ...
        return {'name':obj.name for obj in
                    Company.objects.filter(id=cid, is_valid=True)}

    Не, ну а чё? )

    Crazyzubr, 11 Апреля 2013

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

    +14

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void ThumbnailAdapter::clearCache(size_t index) {
        if ((size_t)-1 == index) {
            mImages.clear();
        } else {
            ImagesMap::iterator it = mImages.find (index);
            if (mImages.end() != it) {
                mImages.erase(it);
            }
        }
    }

    годная очистка map'ы

    shomeser, 12 Марта 2013

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

    +113

    1. 1
    http://habrahabr.ru/post/172129/

    «Мне нужен был online-сервис для генерации GUID»

    Пожалуйста, подключитесь к интернету, чтобы сгенерировать гуид. Что дальше? Конкатенация строк через RESTful сервер в облаке амазона?

    vse_govno, 10 Марта 2013

    Комментарии (26)
  6. Pascal / Говнокод #12714

    +96

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    procedure TForm1.FormCreate(Sender: TObject);
    var formattedDateTime : string; S: TSearchRec; sf : Int64;
    begin
      Application.OnException := MyHandler;
      if IsRunningEXEName(ExtractFileName(Application.ExeName)) = true then
      begin
        Application.Terminate;
        Exit;
      end;

    Попытка запретить запуск копии программы. Неудачная.

    increazon, 09 Марта 2013

    Комментарии (26)
  7. Си / Говнокод #12540

    +139

    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
    long __stdcall wndproc(HWND wnd, unsigned int message, WPARAM wparam, LPARAM lparam)
    {
    	switch(message)
    	{
    	case WM_USER + 100:
    		{
    			char data[128];
    			fill_data(data);
    			PostMessage(wnd, WM_USER + 666,  0, (LPARAM)data);
    			return 0;
    		}
    	case WM_USER + 666:
    		{
    			char * data = (char *)lparam;
    			use_data(data);
    			return 0;
    		}
    //etc

    Wandering of the pointer или как выжить вне стека.

    Xom94ok, 05 Февраля 2013

    Комментарии (26)
  8. PHP / Говнокод #12290

    +57

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // Просто удаляет элемент из массива
      function delElement($arr, $index)
      {
        $result = Array();
        for($i=0;$i<count($arr);$i++)
          if($index != $i) $result[] = $arr[$i];
        
        return $result;
      }

    - Ваше мнение, коллега?
    - Кал молодой особи пыхаписта, коллега. Очень ярко выражены типичные признаки.

    clauclauclau, 14 Декабря 2012

    Комментарии (26)
  9. Python / Говнокод #12191

    −100

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    size = 3
    lines = ["___", "bcd", "___"]
    board = [[None]*size]*size
    for x in range(0, size):
      for y in range(0, size):
        if lines[x][y] != '_':
          board[x][y] = lines[x][y]
    print(board)

    я бы, очевидно, хотел видеть результат:
    [[None, None, None], ['b', 'c', 'd'], [None, None, None]]
    но питоша выводит:
    [['b', 'c', 'd'], ['b', 'c', 'd'], ['b', 'c', 'd']]

    serpinski, 24 Ноября 2012

    Комментарии (26)
  10. Куча / Говнокод #12090

    +120

    1. 1
    clearScreen = putStr $ take 50 (repeat '\n')

    Написано нормально, но вот задумка...

    Fai, 10 Ноября 2012

    Комментарии (26)
  11. Куча / Говнокод #12085

    +124

    1. 1
    2. 2
    3. 3
    4. 4
    main =do
            let b = 56
            let b = b+1
            print b

    Зачем есть возможность задавать переменные с однаковыми именами, если их использовать ниже всё равно нельзя?
    http://ideone.com/b1DGYF

    LispGovno, 09 Ноября 2012

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