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

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

    +56

    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
    public function analyse($args) {
        $i = -1;
        $length = 0;
        $pictures = array();
    
        foreach ($args as $string) {
            switch (trim($string)) {
                case '{':
                    $i++;
                    $pictures[$i] = new element();
                    $length++;
                    break;
                case '}':
                   break;
               default:
                    if (preg_match('/^ {0,}([A-Za-z]{1,})\s{0,}:\s{0,}\'([\S\s]{0,})\';/iu', $string, $matches)) {
                        $pictures[$i]->setProperty($matches[1], $matches[2]);
                    }
                    break;
            }
        }
        return new container($pictures, $length);
    }

    Рукопашный парсинг Json-подобного синтаксиса.

    vistefan, 15 Августа 2012

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

    +55

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // Проверяем корректность имени
        if(!preg_match("/^(([A-z\s]+)|([АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя\s]+))$/i", $_POST['name']))
            { $error .= ' - Вы ввели некорректное имя.<br>'; $count_error++; }
            
            // Проверяем корректность поля страны
        if(!preg_match("/^(([A-z\s]+)|([АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя\s]+))$/i", $_POST['country']))
            { $error .= ' - Вы ввели некорректное название страны.<br>'; $count_error++; }
    
            // Проверяем корректность поля города
        if(!empty($_POST['city']) && !preg_match("/^(([A-z\s]+)|([АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя\s]+))$/i", $_POST['city']))
            { $error .= ' - Вы ввели некорректное название города.<br>'; $count_error++; }

    Давно таких регулярок не видел :)

    duxabilii, 15 Августа 2012

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

    +28

    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
    byte* GetBuffer0(bool free = false)
    {
    	static std::auto_ptr<byte> transferBuffer;
    
    	if (free)
    	{
    		delete [] transferBuffer.release();
    	}
    	else
    	{
    		if (!transferBuffer.get())
    		{
    			transferBuffer.reset(new byte[BUFFER_SIZE]);
    		}
    	}
    	return transferBuffer.get();
    }
    
    byte* GetBuffer1(bool free = false)
    {
    	static std::auto_ptr<byte> transferBuffer;
    
    	if (free)
    	{
    		delete [] transferBuffer.release();
    	}
    	else
    	{
    		if (!transferBuffer.get())
    		{
    			transferBuffer.reset(new byte[BUFFER_SIZE]);
    		}
    	}
    	return transferBuffer.get();
    }

    legacy-дебри

    ni3_inv, 14 Августа 2012

    Комментарии (8)
  5. Assembler / Говнокод #11531

    +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
    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
    .text:00018584                 EXPORT get_msg_sequence
    .text:00018584 get_msg_sequence                        ; CODE XREF: IPC_send_singleIPC+6p
    .text:00018584                                         ; __IPC_send_singleIPC+6p
    .text:00018584                 LDR             R0, =0x7800C
    .text:00018586                 PUSH            {R4,LR}
    .text:00018588                 ADD             R0, PC
    .text:0001858A                 LDR             R0, [R0]
    .text:0001858C                 LDRB            R3, [R0]
    .text:0001858E                 CBZ             R3, loc_185A2
    .text:00018590                 LDR             R1, =(aRil - 0x1859C)
    .text:00018592                 MOVS            R0, #6
    .text:00018594                 LDR             R2, =(aS_0 - 0x1859E)
    .text:00018596                 LDR             R3, =(aGet_msg_sequen - 0x185A0)
    .text:00018598                 ADD             R1, PC  ; "RIL"
    .text:0001859A                 ADD             R2, PC  ; "%s()"
    .text:0001859C                 ADD             R3, PC  ; "get_msg_sequence"
    .text:0001859E                 BLX             __android_log_print
    .text:000185A2
    .text:000185A2 loc_185A2                               ; CODE XREF: get_msg_sequence+Aj
    .text:000185A2                 LDR             R3, =(unk_98E7E - 0x185A8)
    .text:000185A4                 ADD             R3, PC
    .text:000185A6                 LDRB            R2, [R3]
    .text:000185A8                 CMP             R2, #0xFD
    .text:000185AA                 BLS             loc_185B0
    .text:000185AC                 MOVS            R2, #0
    .text:000185AE                 B               loc_185B2
    .text:000185B0 ; ---------------------------------------------------------------------------
    .text:000185B0
    .text:000185B0 loc_185B0                               ; CODE XREF: get_msg_sequence+26j
    .text:000185B0                 ADDS            R2, #1
    .text:000185B2
    .text:000185B2 loc_185B2                               ; CODE XREF: get_msg_sequence+2Aj
    .text:000185B2                 LDR             R1, =(unk_98E7E - 0x185BA)
    .text:000185B4                 STRB            R2, [R3]
    .text:000185B6                 ADD             R1, PC
    .text:000185B8                 LDRB            R0, [R1]
    .text:000185BA                 POP             {R4,PC}
    .text:000185BA ; End of function get_msg_sequence

    Потрясающе эффективный выхлоп GCC. Компилировалось, вероятно, все-таки с включенной оптимизацией.

    Например, последовательность LDR R1/ADD R1,PC/LDRB R0, [R1] в конце вообще лишняя: достаточно было использовать R0 вместо R2.

    Grindars, 04 Августа 2012

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

    +130

    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
    /*
    	 * Это массив объектов данных мануала. Один элемент - одна ступень.
    	 * У объектов может быть указан checkpoint:Boolean - место, к которому вернется игрок, при закрытии игры
    	 * У каждого объекта должен быть указан type:String, в зависимости от этого меняются другие свойства.
    	 * Для создания нового типа ступени туториала - необходимо создать класс, наследующий ITutorialData
    	 * и добавить соотвествующую запись в showStep::TutorialManager
    	 * Виды type:
    		 * dialog - диалоговое окно, атрибуты:
    			 * sex:Boolean - какого персонажа показывать в окне
    			 * descr:String - текст диалогового окна
    		 * pointer - стрелка, указывающая на кнопку
    			 * x,y:int - координаты кнопки
    			 * width,height:uint - размеры кнопки
    			 * x_a,y_a:int - координаты стрелки
    			 * angle:int - поворот стрелки, рекомендуемые значения: 0, 90, -90, 180
    			 * необязательные:
    				 * startfunc:Function - функция, выполняемая ПРИ переходе на эту ступень
    				 * endfunc:Function -  функция, выполняемая ПОСЛЕ нажатия кнопки
    		 * handler - слушатель событий
    		 * target:EventDispatcher - объект, на который подпишется туториал
    		 * event:String - название события, на которое подпишется туториал
    		 * необязательные:
    				 * startfunc:Function - функция, выполняемая ДО подписки на событие
    				 * eventDispatchFunction:Function - функция, выполняемая ВО ВРЕМЯ возникновения события
    				 * endfunc:Function -  функция, выполняемая ПОСЛЕ возникновения события
    		 *  handler-pointer - слушатель событий, показывающий стрелку
    			 * x_a,y_a:int - координаты стрелки
    			 * target:EventDispatcher - объект, на который подпишется туториал
    			 * event:String - название события, на которое подпишется туториал
    			 * необязательные:
    				 * startfunc:Function - функция, выполняемая ДО подписки на событие
    				 * eventDispatchFunction:Function - функция, выполняемая ВО ВРЕМЯ возникновения события
    				 * endfunc:Function -  функция, выполняемая ПОСЛЕ возникновения события 
    	 * Спасибо за внимание
     */			
    public static var data:Array;

    После такого комментария становится страшно что-то трогать

    KirAmp, 31 Июля 2012

    Комментарии (8)
  7. JavaScript / Говнокод #11496

    +154

    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
    function reNumberAreas(parent)
    {
     for (i=0;i<parent.childNodes.length;i++)
     {
      try
      {
       parent.childNodes[i].firstChild.firstChild.firstChild.firstChild.id = cutNumber(parent.childNodes[0].firstChild.firstChild.firstChild.firstChild.id) + i;
       parent.childNodes[i].firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.id = parent.childNodes[i].firstChild.firstChild.firstChild.firstChild.id + "_text";
       parent.childNodes[i].firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.src = parent.childNodes[i].firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling.nextSibling.src.replace(/index=\d+/g,"index=" + i);
      }
      catch (e)
      {
      }
     }
    }

    Форматирование кода сохранено для придания драматичности.

    Areks, 30 Июля 2012

    Комментарии (8)
  8. JavaScript / Говнокод #11449

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if ($('#stoykaKS').is(':checked')) /*     29             */
    {wt.document.writeln('<div style=" position: absolute; top: 0; left: 0;"><img src="../images/stories/esd-classic/picstoykaKS.gif" /></div>');}
    if ($('#stolUS01').is(':checked')) /*      8             */
    {wt.document.writeln('<div style=" position: absolute; top: 0; left: 0;"><img src="../images/stories/esd-classic/picstolUS01.gif" /></div>');}
    if ($('#perfoPFPX').is(':checked')) /*    21              */
    {wt.document.writeln('<div style=" position: absolute; top: 0; left: 0;"><img src="../images/stories/esd-classic/picperfoPFPX.gif" /></div>');}

    И так далее, несколько сотен строк.

    Tairesh, 20 Июля 2012

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

    +151

    1. 1
    2. 2
    3. 3
    4. 4
    if(typeof console == 'object' && typeof console.log == 'function'){
        log = console.log.bind(console);
    }
    else log = function(attr){}

    хуита, 19 Июля 2012

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

    +68

    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
    public function makeCategoryArray() {
            $a = array();
            for($i = 1; $i <=3 ; $i++) {
                $j = $i != 1 ? $i : '';
                $Method = "getCategoryid" . $j;
                $categoryid = $this->$Method();
                if($this->$Method()) {
                    try{
                        $category = BC::Get()->getCompanyService()->getCategoryByID($categoryid);
                        $a[] = array(
                            'name' => $category->getName(),
                            'url' => $category->makeURL()
                        );
                    } catch(Exception $e) {
                        return $a;
                    }
                }
            }
            return $a;
        }

    Эпичный вызов getCategoryid1(), getCategoryid2(), getCategoryid3() когда есть getField(fieldname)...

    max_wp, 13 Июля 2012

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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for (int i = 0; i < e.Row.Cells.Count; i++)
                        {
                            ....................................................
                            if ((i == 1) || (i == 4) || (i == 5) || (i == 6) || (i == 7) || (i == 8) || (i == 9) || (i == 10) || (i == 11) || (i == 12))//11 12
    .............................................

    Indian style..
    no comments

    Nataly, 12 Июля 2012

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