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

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

    +108

    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
    TCalc = Class
      Public
        Order : 1..2;
        BMouseDown : Boolean;
        TSS : TPoint;
        mas : array[1..8,1..8] of Byte;
        Constructor Create;
        Procedure MouseDown (Stroka, Stolb : Byte; Var Bool : Boolean);
        Procedure FiguresCount (Var White, Black : Byte);
        Procedure Messages (i : Byte);
        Procedure Proverka (T : TPoint; Stroka, Stolb : Byte;
                            Var Bool, Double : Boolean; Var Dbl : TPoint);
        Procedure ReloadMas (Str, Stolb : Byte; Point : TPoint; Double : Boolean; DblP : TPoint);
        Procedure BoardHelp (Stroka, Stolb : Byte);
        Procedure NoChangeOrder (Stroka, Stolb : Byte; Var NoChangeOrder : Boolean);
        Procedure Proverka_GoTo (Str, Stolb : Byte; Var masBool : ArrBool;
                                 Var masCoord : ArrCoord);
        Procedure Scanner (Var kol : Byte; Var ScanMas : ArrCoord);
        Procedure PlaySound (Wave : TLMDWaveComp; ind : Byte);
        Procedure FigureTrue (Str, Stolb : Byte);
        Procedure Damka_Go (Fig : TPoint; Str, Stolb : Byte;
                            Var Bool, Double : Boolean; Var Dbl : TPoint);
        Procedure IsDamka_Fight (X, Y : Byte; Var Bool : Boolean; Var Coord : TPoint);                    
    end;

    Объявление класса, отвечающего за логику в игре шашки.
    Объектный подход :)

    ClassVar, 16 Ноября 2010

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

    +133

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    int count1 = 0;
                foreach (int a in ilist)
                {
                    lister[count1] = ilist.ElementAt(count1);
                    count1++;
                }

    dot, 15 Ноября 2010

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

    +159

    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
    int makedata(int id,int part,void *d,int datalen,void *buf)
    {
        //packet struct :
        // code = short int, lenght = shotr int, id = int, numofpart = int, data = 1024
    
        int packlen = sizeof(short int)*2 + sizeof(int)*2 + datalen;
        char *tbuf = new char [packlen];
        char* tbufptr = tbuf;
        *((short int *)tbufptr) = data;  //first field
        (short int *)tbufptr++;
        *((short int *)tbufptr) = packlen;  //second field
        (short int *)tbufptr++;
        *((int *)tbufptr) = id;
        (int *)tbufptr++;
        *((int *)tbufptr) = part;
        (int *)tbufptr++;
        *((short int *)tbufptr) = datalen;
        (short int *)tbufptr++;
        memcpy((void*)tbufptr,d,datalen);
    
        buf=tbuf;
        return packlen;
    }
    
    fileinfo* getask(void *b)
    {
        fileinfo *fi = new fileinfo();
        char *bufptr = (char*)b;
        (short int*)bufptr++;
        short int plen = *((short int*)bufptr);
        (short int*)bufptr++;
        fi->numofpart = *((int*)bufptr);
        (int*)bufptr++;
        fi->filelenght = *((int*)bufptr);
        (int*)bufptr++;
        int filelen = plen-(bufptr-(char*)b);
        fi->filename = new char[filelen];
        strncpy(fi->filename,bufptr,filelen);
    
        return fi;
    }

    Вместо того, что бы воспользоваться структурой, забиваем всё ручками.

    KoirN, 14 Ноября 2010

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

    +161

    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
    <?php
    //Список категорий
    function get_cat_list () {
    $sql_cat_list = mysql_query("SELECT * FROM te_categories ORDER BY category_id");
    for ($cat_list=array(); $row=mysql_fetch_assoc($sql_cat_list); $cat_list[]=$row);
    $cat_list = array_reverse ($cat_list); //переворачиваем массив
    return $cat_list;
    }
     
    //Категории в норм виде (возвращает массив или печатает)
    function get_categories ($cat_list, $print="noprint") {
    foreach ($cat_list as $cat)
    	{
    	$categories [$cat['category_id']]['name'] = $cat['name'];
    	$categories [$cat['category_id']]['cat_count'] = $cat['cat_count'];
    	if ($print !== "noprint") echo '<li class="list"><a href="?page=article&category_id='.$cat['category_id'].'">'.$cat['name'].'</a> <small>('.$cat['cat_count'].')</small></li>';
    	}
    	if ($print == "noprint") return $categories;
    }
    /*
    Коментарий ниже:
    Зачем вначале мы получили список категорий $cat_list, 
    а затем зачем-то преобразовали в $categories в цикле foreach? 
    Просто для удобства и красоты мы из списка массивов 
    (записей или строк), полученных из БД, 
    сделали двумерный массив 
    с первичным ключом category_id 
    (ведь он у нас уникален). 
    Для наглядности распечатайте оба этих массива, 
    и сразу увидите разницу:
    */
    ?>

    Свеженькое Г
    Версия 0.02 CMS Tractor Engine
    (Кажись 2010 год)
    Будущее интернетов...

    istem, 13 Ноября 2010

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

    +103

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if Column.Field.AsInteger > 10 then
    DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
    else
    DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
    end;

    Классика жанра

    gorsash, 10 Ноября 2010

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

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    switch ($_GET['otdel']) {
    	case null:
    		echo "Название отдела №1";
    		$_GET['otdel'] = 1;
    	break;
    	case 1:
    		echo "Название отдела №1";
    	break;
    
    	case 11:
    // и так далее

    Отдел по умолчанию.
    Вариантов написать толково - тьма. Попробуем?

    AndryG, 07 Ноября 2010

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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    <tr>
    <td><td><td><td><td><td><td><td>
    &nbsp;
    </td></td></td></td></td></td></td></td>
    </tr>

    взялся за реконструкцию одного проекта... там есть сводная таблица и она должна быть разделена на 10 частей по вертикали... Предыдущий программист реализовал разделитель так...

    dexif, 07 Ноября 2010

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

    +165

    1. 1
    alert(( (/([^(A-z)&&(А-я)])/ || prompt.length<1 ).test(prompt('Введите Ваше имя',''))) ? 'Ошибка' : 'Принято')

    Не совсем говнокод, просто весёлый бред. Найдено здесь http://tinyurl.com/22w4b8q

    eval, 05 Ноября 2010

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

    +151

    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
    void TPEForm::LoadFromFile(AnsiString _FileName)
    {
        FileName = _FileName;
        Caption = FileName + " - " + DOS_HEADER_STRING;
        iPEFileHandle = FileOpen(FileName,fmOpenRead);
        FileRead(iPEFileHandle,&dos_header,sizeof(IMAGE_DOS_HEADER));
        TreeView->Items->AddChild(NULL,DOS_HEADER_STRING);
        dos_header_frame = new TDOSHeader(this);
        dos_header_frame->Parent = Panel;
        dos_header_frame->e_magic->Text = "0x"+IntToHex(dos_header.e_magic,4);
        dos_header_frame->e_cblp->Text = "0x"+IntToHex(dos_header.e_cblp,4);
        dos_header_frame->e_cp->Text = "0x"+IntToHex(dos_header.e_cp,4);
        dos_header_frame->e_crlc->Text = "0x"+IntToHex(dos_header.e_crlc,4);
        dos_header_frame->e_cparhdr->Text = "0x"+IntToHex(dos_header.e_cparhdr,4);
    ...
        dos_header_frame->e_ovno->Text = "0x"+IntToHex(dos_header.e_ovno,4);
        dos_header_frame->e_oemid->Text = "0x"+IntToHex(dos_header.e_oemid,4);
        dos_header_frame->e_oeminfo->Text = "0x"+IntToHex(dos_header.e_oeminfo,4);
        dos_header_frame->e_lfanew->Text = "0x"+IntToHex((int)dos_header.e_lfanew,4);
    
    ...
    
        TreeView->Items->AddChild(nt_header_node,FILE_HEADER_STRING);
        file_header_frame = new TFileHeader(this);
        file_header_frame->Parent = Panel;
        file_header_frame->Machine->Text = "0x"+IntToHex((int)nt_header.FileHeader.Machine,4);
        file_header_frame->NumberOfSections->Text = "0x"+IntToHex((int)nt_header.FileHeader.NumberOfSections,4);
        file_header_frame->TimeDateStamp->Text = "0x"+IntToHex((int)nt_header.FileHeader.TimeDateStamp,8);
        file_header_frame->PointerToSymbolTable->Text = "0x"+IntToHex((int)nt_header.FileHeader.PointerToSymbolTable,8);
        file_header_frame->NumberOfSymbols->Text = "0x"+IntToHex((int)nt_header.FileHeader.NumberOfSymbols,8);
        file_header_frame->SizeOfOptionalHeader->Text = "0x"+IntToHex((int)nt_header.FileHeader.SizeOfOptionalHeader,4);
        file_header_frame->Characteristics->Text = "0x"+IntToHex((int)nt_header.FileHeader.Characteristics,4);
    
        TTreeNode *optional_header_node = TreeView->Items->AddChild(nt_header_node,OPTIONAL_HEADER_STRING);
        optional_header_frame = new TOptionalHeader(this);
        optional_header_frame->Parent = Panel;
    
        TreeView->Items->AddChild(optional_header_node,STANDARD_FIELDS_STRING);
        standard_fields_frame = new TStandardFieldsFrame(this);
        standard_fields_frame->Parent = Panel;
        TTreeNode *additional_fields_node = TreeView->Items->AddChild(optional_header_node,ADDITIONAL_FIELDS_STRING);
        additional_fields_frame = new TAdditionalFieldsFrame(this);
        additional_fields_frame->Parent = Panel;
    
        standard_fields_frame->Magic->Text = "0x"+IntToHex((int)nt_header.OptionalHeader.Magic,4);
        standard_fields_frame->MajorLinkerVersion->Text = "0x"+IntToHex((int)nt_header.OptionalHeader.MajorLinkerVersion,2);
    ...
        additional_fields_frame->ImageBase->Text = "0x"+IntToHex((int)nt_header.OptionalHeader.ImageBase,8);
        additional_fields_frame->SectionAlignment->Text = "0x"+IntToHex((int)nt_header.OptionalHeader.SectionAlignment,8);
        additional_fields_frame->FileAlignment->Text = "0x"+IntToHex((int)nt_header.OptionalHeader.FileAlignment,8);
    
    ...

    писал на третьем курсе загрузку заголовка PE-файлов в GUI

    stas, 05 Ноября 2010

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

    +144

    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
    Хочу провести маленький опрос.
    
    Внимание вопрос:
    Считать ли код говнокодом, если:
    
    а) он выполняет свою работу хорошо.
    б) его легко поддерживать.
    в) не используются хаки (т.е. код переносим, не зависит от браузера и т.д.)
    
    ?
    
    ЧЁТКО выполняются эти 3 условия, и не важно, что в коде, например, используется даже оператор goto.
    
    Моё мнение - нет, если эти 3 условия выполняются.

    Oleg_quadro, 01 Ноября 2010

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