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

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

    +19

    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
    wstring& delphi::IntToStr(int integer, wstring& str)
    {
    	if (0 == integer)		
    		return str = L"0";	
    	
    	str.clear();
    	wstring sign(L"");
    	if (integer < 0)
    	{
    		sign = L"-";
    		integer = -integer;
    	}
    	else
    		sign = L"";
    
    	while (integer >= 1)
    	{
    		str.push_back( (integer % 10) + 48 );  
    		integer /= 10;
    	}
    	str += sign;
    	std::reverse(str.begin(), str.end());
    			
    	return str;
    }

    snw, 03 Июля 2014

    Комментарии (59)
  3. Си / Говнокод #15707

    +133

    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
    #ifndef ORDER32_H
    #define ORDER32_H
    
    #include <limits.h>
    #include <stdint.h>
    
    #if CHAR_BIT != 8
    #error "unsupported char size"
    #endif
    
    enum
    {
        O32_LITTLE_ENDIAN = 0x03020100ul,
        O32_BIG_ENDIAN = 0x00010203ul,
        O32_PDP_ENDIAN = 0x01000302ul
    };
    
    static const union { unsigned char bytes[4]; uint32_t value; } o32_host_order =
        { { 0, 1, 2, 3 } };
    
    #define O32_HOST_ORDER (o32_host_order.value)
    
    #endif

    Говнокод из http://stackoverflow.com/questions/2100331/c-macro-definition-to-determine-big-endian-or-little-endian-machine
    Мало того, что писать в один тип из юниона и потом читать из другого это UB, так еще компилятор (в случае GCC) из

    int main(void)
    {return O32_HOST_ORDER == O32_LITTLE_ENDIAN;}

    нагенерирует код
    main:
    xor eax, eax
    cmp DWORD PTR o32_host_order[rip], 50462976
    sete al
    ret
    o32_host_order:
    .byte 0
    .byte 1
    .byte 2
    .byte 3

    т.е. всякий раз, когда надо узнать endianess, мы лезем в константную статическую переменную и сравниваем ее с константой

    j123123, 08 Апреля 2014

    Комментарии (59)
  4. Си / Говнокод #14935

    +142

    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
    static OSStatus
    SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                     uint8_t *signature, UInt16 signatureLen)
    {
        OSStatus        err;
        ...
    
        if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
            goto fail;
        if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
            goto fail;
            goto fail;
        if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
            goto fail;
        ...

    Говно с яблочным привкусом.
    http://habrahabr.ru/post/213525/

    P.S.: Не уверен Си это или плюсы.

    Vindicar, 24 Февраля 2014

    Комментарии (59)
  5. Си / Говнокод #14627

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    //...
    float a = 7;
    printf("%d", *(unsigned int *)(&a) >> 23);
    // Что напечатает?
    //...

    На экзамене как-то задали такой вопрос. А ну-ка, кто без компилятора ответит?

    GonZaleZ, 18 Февраля 2014

    Комментарии (59)
  6. Python / Говнокод #13919

    −101

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    def Find(dir):
            def walk(a,b,files):
                t1=0
                for i in files:
                    t1+=1
                    if i[-4:]==".sis" or i[-4:]==".Sis" or i[-4:]==".SIs" or i[-4:]==".SIS" or i[-4:]==".SiS" or i[-4:]==".sIS" or i[-4:]==".siS" or i[-5:]==".sisx" or i[-5:]==".Sisx" or i[-5:]==".SIsx" or i[-5:]==".SISx" or i[-5:]==".SISX" or i[-5:]==".sISX" or i[-5:]==".siSX" or i[-5:]==".sisX" or i[-5:]==".SisX" or i[-5:]==".SIsX" or i[-5:]==".SiSX" :
                        list1.append(cn(i))
                        list2.append(cn("%s\%s"%(b,i)))

    Когда еще была жива симба, под нее был интерпретатор питона. Этот отрывок - творение некоего китайского товарища под PyS60.

    Pythoner, 09 Октября 2013

    Комментарии (59)
  7. PHP / Говнокод #13323

    +154

    1. 1
    list($V_id, $V_image, $V_title, $V_text, $V_url, $V_link_to, $V_status) = array('','','','','','','');

    множественное присваивание?! не, не слыщал

    dead_star, 08 Июля 2013

    Комментарии (59)
  8. Куча / Говнокод #13145

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Правила пользования метрополитеном
    ...
    9. Всем лицам, находящимся на территории метрополитена, запрещается:
    ...
    9.6. Провозить громоздкий багаж, сумма измерений которого по длине, ширине, высоте, а для рулона - по высоте и двум его диаметрам или осям в основании,  превышает 200 см, или длина которого свыше 220 см

    TarasB, 10 Июня 2013

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

    +132

    1. 1
    public virtual int ReadByte()

    Тут в соседнем треде появилась такая тема:

    http://msdn.microsoft.com/ru-ru/library/system.io.stream.readbyte.aspx
    http://govnokod.ru/12311#comment164854

    LispGovno, 20 Декабря 2012

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

    +130

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    perft :: Int -> Position -> Int
    perft depth pos 
    	| depth <= 0 = 1
    	| otherwise  = sum . map (perft $ depth - 1) $ legalPositions where
    		legalPositions = filter isLegalPosition nextpositions
    		nextpositions = map (\move -> makeMove move pos) $ (moves pos)

    Fai, 28 Ноября 2012

    Комментарии (59)
  11. PHP / Говнокод #8535

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        // Если к нам идёт Ajax запрос, то ловим его
        echo 'Это ajax запрос!';
        exit;
    }
    //Если это не ajax запрос
    echo 'Это не ajax запрос!';

    Что-то смущает меня эта "поповщина"

    bot-minurast, 16 Ноября 2011

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