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

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

    −108

    1. 1
    2. 2
    3. 3
    while([item retainCount] > 1) {
        [item release];
    }

    тут правда objective-c, а не c, но смысл в том, что человек поборол утечки памяти

    psychos, 23 Июля 2010

    Комментарии (18)
  3. Java / Говнокод #3725

    +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
    public static String getClassName(final HWND hWnd) {
    	final char[] cname_b = new char[1024];
    	User32.INSTANCE.GetClassName(hWnd, cname_b, 1000);
    
    	final char[] cname_b_truncated = ArrayUtils.toPrimitive(Iterables
    		.toArray(Functional.takeWhile(Arrays.asList(ArrayUtils
    			.toObject(cname_b)), Predicates.not(Predicates
    			.equalTo(Character.valueOf((char) 0)))),
    			Character.class));
    
    	return String.valueOf(cname_b_truncated);
        }

    Только что выдавил)

    Интерес представляют строки с 5 по 9. Тут должно было быть всего-лишь
    takeWhile (/= '\0') cname_b
    но из-за боксинга/анбоксинга (примитивные типы в Java не могут быть параметрами Generic), и из-за того, что массивы в Java не Iterable - получилось ЭТО.

    burdakovd, 17 Июля 2010

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

    +131

    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
    #include <stdio.h>
    
    void factorization(int num, int show) {
        int num1 = num;
        int n = 2;
        while ( n*n <= num1 ) {
            if ( num%n == 0 ) {
                num = num / n;
                if ( show )
                    printf( "%d\n", n );
            } else {
                n ++;
            }
        }
    }
    
    int main() {
        int i = 0;
        while ( i < 1000 ) {
            factorization(999999, 0);
            i ++;
        }
        return 0;
    }

    Опубликовано в одной из ссылок с http://habrahabr.ru/blogs/ruby/48952/ (если надо, точную ссылку найду позже).
    Код раскладывает число на простые множители тупым перебором делителей. Мало того, что этот код медленный, так он иногда последний множитель пропускает. Одновременно и ошибка, и скорость исправляются так:
    - while ( n*n <= num1 ) {
    + while ( n <= num ) {
    Неожиданно, правда?

    inkanus-gray, 13 Июля 2010

    Комментарии (18)
  5. Куча / Говнокод #3689

    +89

    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
    ## dup_hq - merge ##
     dup     = opos!=pos || abs(dm)<2 || abs(dm)==3 ? 0 : dcn*5<dbc && dnn*5<dbc && 
    (dcn<1.25*thr || bn<bc && pos==lpos) || (dcn*dcn<dbc || dcn*5<dbc) && bn<bc && pos==lpos 
    && dnn<.9*dbc || dnn*9<dbc && dcn*3<dbc ? 1 : (dbc*dbc<dcn || dbc*5<dcn) && 
    bb<bc && pos==lpos && dbb<.9*dcn || dbb*9<dcn && dbc*3<dcn ||  dbb*5<dcn && 
    dbc*5<dcn &&  (dbc<1.25*thr || bb<bc && pos==lpos) ? -1 : 0
    mer = bom==false && opos==pos && dup==0 && abs(dm)>2 && 
          (dbc*8<dcn || dbc*8<dbb || dcn*8<dbc || dcn*8<dnn || dbc*2<thr ||
           dcn*2<thr || dnn*9<dbc && dcn*3<dbc || dbb*9<dcn && dbc*3<dcn)
    
    
    add  = bp1*cn2>bn2*cp1*(1+thr*.01) && bn0*cn2>bn2*cn0*(1+thr*.01) && 
              cn2*bn1>cn1*n2*(1+thr*.01)
    dup  = bom ? (bn0>bp2 && bn0>=bp1 && bn0>bn1 && bn0>bn2 && cn0<125 ? 
             (d12*d12<d10 || d12*9<d10) ? 1 :  (d10*d10<d12 || d10*9<d12) ? 
             0 : 4 : bp1>bp3 && bp1>=bp2 && bp1>bn0 && bp1>bn1 ? 1 : 0) : dup!=0 ? 
             dup : om>0 && om<5 ? (bbool==false ? 0 : om==4 && bp1*cn1<bn1*cp1 ||
             om==3 && d10<d01 || om==1 ? -1 : 1) : om==5 ? (bp1*cp2>bp2*cp1*(1+thr*.01) && 
             bn0*cp2>bp2*cn0*(1+thr*.01) && cp2*bn1>cn1*bp2*(1+thr*.01) &&
             (add==false || cp2*bn2>cn2*bp2) ? -2 : add ? 2 : bn0*cp1>bp1*cn0 && 
             (bn0*cn1<bn1*cn0 || cp1*bn1>cn1*bp1) ? -1 : bn0*cn1>bn1*cn0 ? 1 : 0) : 0

    это называется AviSynth - и это вполне нормальный скрипт, ибо другого пути там просто нет, да и альтернатив AviSynthy пока нет

    3.14159265, 12 Июля 2010

    Комментарии (18)
  6. PHP / Говнокод #3511

    +173

    1. 1
    $darr = array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

    Похапе. Нафик нужны встроенные функции даты / времени? В феврале 28 дней, и баста.

    Фрагмент из давно работающего проекта.

    cyrill, 18 Июня 2010

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

    +157

    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
    TForm1 *Form1;
    //----------------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //- Буква А ---------------------------------------------------------------------
    void __fastcall TForm1::Label1Click(TObject *Sender)
    {
      Image1->Picture->LoadFromFile("PICTURE/1.bmp");
     PlaySound("SOUND/1.wav",0,SND_ASYNC);
    }
    //--Буква Б-----------------------------------------------------------------------
    void __fastcall TForm1::Label2Click(TObject *Sender)
    {
      Image1->Picture->LoadFromFile("PICTURE/2.bmp");
     PlaySound("SOUND/2.wav",0,SND_ASYNC);
    }
    //--Буква В-------------------------------------------------------------------------
    void __fastcall TForm1::Label3Click(TObject *Sender)
    {
     Image1->Picture->LoadFromFile("PICTURE/3.bmp");
     PlaySound("SOUND/3.wav",0,SND_ASYNC);
    }
    ....
    
    и т.д.
    
    
    //--Буква Я-------------------------------------------------------------------------
    void __fastcall TForm1::Label33Click(TObject *Sender)
    {
     Image1->Picture->LoadFromFile("PICTURE/33.bmp");
     PlaySound("SOUND/33.wav",0,SND_ASYNC);
    }
    //---------------------------------------------------------------------------

    Пример из обучающей статьи по с++, где от а до я выресовываются буквы.

    pyshpysh, 16 Июня 2010

    Комментарии (18)
  8. C# / Говнокод #3489

    +117

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    void  makeGetSet(ref int delegate() get, ref void delegate(int)  set)
    {    
        int _data = 0;
        
        get = {return _data;};
        set = (int Data){_data = Data;};
    }

    Говногость, 16 Июня 2010

    Комментарии (18)
  9. PHP / Говнокод #3481

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    function nl()       {return "\n";}
    function sp()       {return chr(0);}
    function space()    {return chr(32);}
    function byte($n)   {return chr($n);}

    bugmenot4, 15 Июня 2010

    Комментарии (18)
  10. Pascal / Говнокод #3371

    +101

    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
    function IPtoDWORD(const s: string):DWORD;
    var
    L: TStringList;
    b: packed array [0..3] of byte;
    i: Integer;
    begin
    Result := 0;
      L := TStringList.Create;
        try
          L.Delimiter := '.';
            L.DelimitedText := s;
              for i := 0 to 3 do
                b[3 - i] := StrToInt(L[i]);
                  Result := pdword(@b[0])^;
        finally
          L.Free
        end;
    end;
    ...
    if (NewIP >= IPtoDWORD('192.168.0.0')) and (NewIP <= IPtoDWORD('192.168.0.255')) then
      //Пускаем
        else
          ServerSocket.Socket.Connections[i - 1].SendText('запрет'); //Запрет
            ServerSocket.Socket.Connections[i - 1].Close; //Закрываем канал
              if (NewIP >= IPtoDWORD('193.168.0.0')) and (NewIP <= IPtoDWORD('193.168.0.255')) then
                //Пускаем
                if (NewIP >= IPtoDWORD('194.168.0.0')) and (NewIP <= IPtoDWORD('194.168.0.255')) then
                  //Пускаем
                    if (NewIP >= IPtoDWORD('195.168.0.0')) and (NewIP <= IPtoDWORD('195.168.0.255')) then
                      //Пускаем

    личинка быдлокодера в схватке с IPv4
    примечательно искрометное форматирование кода

    bugmenot, 01 Июня 2010

    Комментарии (18)
  11. Си / Говнокод #3347

    +143

    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
    switch(pin){
    		case 0:
    		break;
    		case 1:
    		ADMUX = 1;
    		case 2:
    		ADMUX = 1 << 1;
    		case 3:
    		ADMUX = 1 | 1 << 1;
    		case 4:
    		ADMUX = 1 << 2;
    		case 5:
    		ADMUX = 1 | 1 << 2;
    		case 6:
    		ADMUX = 1 << 1 | 1 << 2;	
    	}

    Микроконтроллерный говнокод. Этот кусочек указывает, с какого вывода считывать показания АЦП. Эквивалент:
    ADMUX |= pin;

    age, 29 Мая 2010

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