1. 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)
  2. PHP / Говнокод #12935

    +148

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    while(true){
        $it = $this->item_by_id($i++);
        if($it != null){
            $nItems[] = $it;
        }
        if(count($nItems) >= 5){
            break;
        }
    }

    mr.The, 25 Апреля 2013

    Комментарии (4)
  3. 1C / Говнокод #12934

    −121

    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
    Функция ТекстЗапросаИзСтрокиВЧисло(пИмяПоля, пДлинаСтроки, пСимволРазделителя=".")
        лТекст="ВЫБОР ";
        Для лДлинаЦелойЧасти=0 По пДлинаСтроки Цикл
            Если лДлинаЦелойЧасти=пДлинаСтроки Тогда 
                лТекст=лТекст+"ИНАЧЕ"+Символы.ПС;
            Иначе
                лТекст=лТекст+"КОГДА ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""+пСимволРазделителя+""" ИЛИ ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""" ТОГДА "+Символы.ПС;
            КонецЕсли; 
            Если лДлинаЦелойЧасти=0 Тогда лТекст=лТекст+"    0"+Символы.ПС; КонецЕсли; 
            Для лИнд=1 По лДлинаЦелойЧасти Цикл
               лТекст=лТекст+"    ВЫБОР "+Символы.ПС;
                Для лЦифра=0 По 9 Цикл
                    лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
                КонецЦикла;
                лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "*"+Формат(Pow(10, лДлинаЦелойЧасти-лИнд), "ЧРД=.; ЧГ=0")+"+")+Символы.ПС;
            КонецЦикла;
            Для лИнд=лДлинаЦелойЧасти+2 По пДлинаСтроки Цикл
                лТекст=лТекст+"+ ВЫБОР";
                Для лЦифра=0 По 9 Цикл
                    лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
                КонецЦикла;
                лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "/"+Формат(Pow(10, лИнд-лДлинаЦелойЧасти-1), "ЧРД=.; ЧГ=0"))+Символы.ПС;
            КонецЦикла;
        КонецЦикла;
        лТекст=лТекст+"КОНЕЦ";
        Возврат лТекст;
    КонецФункции

    kovyl2404, 23 Апреля 2013

    Комментарии (35)
  4. JavaScript / Говнокод #12933

    +170

    1. 1
    if (window.IsLocking !== [].xxx)

    Проверка на undefined

    Zergatul, 22 Апреля 2013

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

    −105

    1. 1
    2. 2
    [NSTimer scheduledTimerWithTimeInterval:[[NSDate distantFuture] timeIntervalSinceNow] 
                target:self selector:@selector(dummyTimer:) userInfo:self repeats:YES];

    Еще один занятный персонаж. Особенно порадовало "repeats:YES"

    mas_an, 22 Апреля 2013

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

    +138

    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
    public bool ParsеOboznString(string obozn)
            {
                Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");  // Установка русской культуры
    
                try
                {
                    Regex reg = new Regex(@"(\D*)(\d*)([^\+]*)[\+]?(\d+[,]\d+)*");    // регулярное выражение
                    Match m = reg.Match(obozn);                                                            // разбор строки обозначения
                    ....
                    ....
                    ....
                }
                catch
                {
                    return false;
                }
    
                return true;
            }

    "культурный" код и "содержательные" комментарии

    diimdeep , 22 Апреля 2013

    Комментарии (10)
  7. Java / Говнокод #12929

    +72

    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
    Double extractShare(Product product, ShareExtractor extractor) {
            if (product != null) {
    
                Equity equity = product.getEquity();
    
                if (equity != null) {
                    Double shareMetric = extractor.extract(equity);
                    if (shareMetric != null) {
                        return shareMetric;
                    }
                }
            }
            return 0.0;
        }
    
        private interface ShareExtractor {
    
            ShareMetricExtractor PUBLIC_SHARE_OUTST_EXTRACTOR = new ShareExtractor() {
                @Override
                public Double extract(Equity equity) {
                    return equity.getPublicShareOutst();
                }
            };
    
            ShareMetricExtractor SHARE_OUTST_EXTRACTOR = new ShareExtractor() {
                @Override
                public Double extract(Equity equity) {
                    return equity.getShareOutst();
                }
            };
    
            Double extract(Equity equity);

    Архитектор головного мозга - это диагноз. Фанатзия нашего системного архитектора толи зашкалила, то ли дала сбой. Сей фердопердозный код был заменен следующим же коммитом, но свн помнит все! )

    jericho, 22 Апреля 2013

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

    +153

    1. 1
    2. 2
    3. 3
    $d = date("d")-1;
    $h = date("H")-2;
    header("Last-Modified: " . gmdate("D, ".$d." M Y ".$h.":i:s") . " GMT");

    Вчера

    straga_coda, 21 Апреля 2013

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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <script type="text/javascript" language="javascript">
    function DeleteConfirmation()
    {
     if (confirm("Are you sure, 
         you want to delete selected records ?")==true)
     return true;
     else
     return false;
    }
    </script>

    http://csharpdotnetfreak.blogspot.com/2009/05/edit-multiple-records-gridview-checkbox.html

    Да так да, нет так нет

    denis90, 21 Апреля 2013

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

    +16

    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
    #define TYPE_INIT_(_Number, _Line, _Type,...) struct ln_##_Line##_number_##_Number : public _Type\
    {\
      ln_##_Line##_number_##_Number()\
        :_Type(__VA_ARGS__){}\
    \
      ln_##_Line##_number_##_Number(const _Type& _val)\
        :_Type(_val){}\
    \
      const _Type& operator=(const _Type& _val)\
      {\
        ((_Type)(*this)) = _val;\
        return (*this);\
      }\
    }
    #define TYPE_INIT(_Number, _Line, _Type,...)  TYPE_INIT_(_Number, _Line, _Type, __VA_ARGS__)
    #define INIT(_Type, ...) TYPE_INIT(__COUNTER__, __LINE__, _Type, __VA_ARGS__)
    
    // использование
    
    struct ABC
    {
      int A,B,C;
      
      ABC(int _A,int _B,int _C)
        :A(_A),
        B(_B),
        C(_C)
      {}
    };
    
    
    struct TestClass
    {
      INIT( string, "Ololo" ) lv_String;
      INIT( ABC, 1, 2, 3 ) lv_ABC;
    };

    Оттуда.

    LispGovno, 20 Апреля 2013

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