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

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

    +158

    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
    class TestThis
    {
        public $property = 'property';
    
        public function test1()
        {
            $this->this($this, new ArrayObject);
    
            $this['wierd'] = true;
    
            print_r($this);
            print_r($this->property . PHP_EOL);
    
            return $this;
        }
    
        public function test2()
        {
            print_r($this);
        }
    
        public function this(&$object, $value)
        {
            $object = $value;
        }
    }
    
    (new TestThis)->test1()->test2();

    Вопрос к самому похапе.

    Так вот нельзя:
    $this = че-нибудь

    "Cannot re-assign $this"

    А вот как выше можно!

    doo_dee_doo_dmt, 02 Сентября 2014

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

    +152

    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
    <?php
    
    class Config {
    
    /* ... */
    
    	public function __construct () 
    	{
    		// Читаем настройки из дефолтного файла
    		$ini = parse_ini_file(dirname(dirname(__FILE__)).'/'.$this->config_file);
    		// Записываем настройку как переменную класса
    		foreach($ini as $var=>$value)
    			$this->vars[$var] = $value;
    
    /* ... */

    Взято из файла api/config.php из Simpla CMS.
    Нельзя было $this->vars = parse_ini_file(dirname(dirname(__FILE__) ).'/'.$this->config_file); написать что ли?

    volter9, 29 Июля 2014

    Комментарии (28)
  4. PHP / Говнокод #16422

    +163

    1. 1
    //проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.

    Не замысловатый комментарий из истории одного проекта

    reilag, 25 Июля 2014

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

    +136

    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
    switch(event->touch_point) {
          case 5:
             input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure);
             input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x5);
             input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->y5);
             input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
             input_mt_sync(data->input_dev);
    //         printk("===x2 = %d,y2 = %d ====\n",event->x2,event->y2);
          case 4:
             input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure);
             input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x4);
             input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->y4);
             input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
             input_mt_sync(data->input_dev);
    //         printk("===x2 = %d,y2 = %d ====\n",event->x2,event->y2);
          case 3:
             input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure);
             input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x3);
             input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->y3);
             input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
             input_mt_sync(data->input_dev);
    //         printk("===x2 = %d,y2 = %d ====\n",event->x2,event->y2);
          case 2:
             input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure);
             input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x2);
             input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->y2);
             input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
             input_mt_sync(data->input_dev);
    //         printk("===x2 = %d,y2 = %d ====\n",event->x2,event->y2);
          case 1:
             input_report_abs(data->input_dev, ABS_MT_TOUCH_MAJOR, event->pressure);
             input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->x1);
             input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->y1);
             input_report_abs(data->input_dev, ABS_MT_WIDTH_MAJOR, 1);
             input_mt_sync(data->input_dev);
             printk("===x1 = %d,y1 = %d ====\n",event->x1,event->y1);
    
          default:
    //         printk("==touch_point default =\n");
             break;
       }

    Автору платили за строки?
    Из драйвера тачскрина ft5x0x

    Pythoner, 28 Июня 2014

    Комментарии (28)
  6. Java / Говнокод #16245

    +70

    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 class MyFancyException extends Exception {
        
        public MyFancyException(Throwable cause) {
            super(cause);
        }
        
        static public <X extends Throwable> void foo() throws X {
            try {
                throw new MyFancyException(new Exception());
            }
            catch (MyFancyException ex) {
                throw (X) ex.getCause();
            }
        }
        
        
        public static void main(String[] args) throws IOException {
            MyFancyException.<IOException>foo();
        }
    }

    Прекрасный способ отстрелить себе ногу. Метод foo() может кинуть любое исключение, даже если его нет в списке throws

    aspid812, 27 Июня 2014

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

    +79

    1. 1
    2. 2
    3. 3
    4. 4
    List<SomeType> list = ...;
    ...
    if (list.size() < 0)
        return true;

    а вдруг?

    evg_ever, 09 Июня 2014

    Комментарии (28)
  8. VisualBasic / Говнокод #16114

    −123

    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
    function GetRaz()
    Open "C:NeWFiles.txt" For Output As #1
    Print #1, "0"
    Close
    Shell "cmd /X /C  set PROCESSOR_ARCHITECTURE > C:NeWFiles.txt", vbHide
    1
    Open "C:NeWFiles.txt" For Input As #1
    Do While Not EOF(1)
    Input #1, Items
    Loop
    Close
    If Items = "" Or items = "0" Then GoTo 1
    GetRaz = Replace(Items, "PROCESSOR_ARCHITECTURE=", "")
    End function

    "Получаем разрядность Windows"
    http://vbbook.ru/1401972927/

    brutushafens, 04 Июня 2014

    Комментарии (28)
  9. Pascal / Говнокод #15959

    +86

    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
    begin
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Генераторы шумовых сигналов');
        if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Низкочастотные генераторы сигналов');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Усилители мощности');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Акустические излучатели');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерители шума и вибраций (шумомеры)');
       if CheckListBox1.checked[0]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2] or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Селективные микровольтметры, измерительные приемники (анализаторы спектра)');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1] or CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[3]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Селективные нановольтметры');
       if CheckListBox1.checked[2] or CheckListBox1.checked[2]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерительные микрофоны');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерительные антенны');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
       then Form2.Memo1.Lines.Add('Вибродатчики (акселерометры)');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Измерительные пробники');
       if CheckListBox1.checked[2] or CheckListBox1.checked[3]
        or CheckListBox2.checked[0] or CheckListBox2.checked[1] or CheckListBox2.checked[2]
        or CheckListBox3.checked[1] or CheckListBox3.checked[2]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Полосовые октавные фильтры со среднегеометри- ческими частотами 250, 500, 1000, 2000, 4000 Гц');
       if CheckListBox1.checked[0] or CheckListBox1.checked[1]
        or CheckListBox3.checked[0]
        or CheckListBox5.checked[0] or CheckListBox5.checked[1] or CheckListBox5.checked[2]
       then Form2.Memo1.Lines.Add('Осциллографы');
     { if Checklistbox6.Checked[0] or CheckListBox3.checked[0]
        or CheckListBox4.checked[0]
      then Form2.Memo1.Lines.Add('Программные средства формирования и контроля полномочий доступа в AC'); }
     <font color="Red"> if CheckListBox2.checked[3] or CheckListBox2.checked[4]or CheckListBox2.checked[5]
        or CheckListBox3.checked[0] or CheckListBox4.checked[0]
       then Form2.Memo1.Lines.Add('Программные средства контроля целостности программ и программных комплексов');</font>

    Вот так живут Америка с Европой.
    http://www.delphisources.ru/forum/showthread.php?t=26142

    brutushafens, 11 Мая 2014

    Комментарии (28)
  10. JavaScript / Говнокод #15613

    +156

    1. 1
    2. 2
    if (l > 0) l += (1 - l) * l;
    else if (l < 0) l *= 1 - (- l);

    Itareo, 29 Марта 2014

    Комментарии (28)
  11. ActionScript / Говнокод #15403

    −123

    1. 1
    2. 2
    3. 3
    4. 4
    var player:c2Player = world.getPlayer();
    var block:c2Block = world.getBlock(player);
    
    player.x = (player.xpos - block.xpos)*(player.angle + block.angle * Math.cos(player.angle/180*Math.PI)*(10-10+1-1+0);

    Оригинальная и полезная формула.

    Bletraut, 09 Марта 2014

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