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

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

    −119.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Для й = 1 По КонДата-НачДата+1 Цикл
            ТекДата = НачДата+й-1;
            
            ДокТ.ВыбратьДокументы(ТекДата, ТекДата);
            Пока ДокТ.ПолучитьДокумент() = 1 Цикл

    Копаясь в самописной конфе, с которой сейчас работаю, дописываю, и усердно исправляю чей-то быдлокод, временами нахожу просто уникальные творения.
    Пожалуй это творение - вершина извращенной фантазии)
    Думаю комментарии излишни)) автор перебирает дни, а потом отдельно по каждому дню делает выборку событий

    Lewkee, 31 Марта 2010

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

    +91.2

    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
    {  Длинная арифметика. 
        [0] - длина числа
        [1..1000] - цифры в системе с основанием 10000, записанные в обратном порядке
    }
    type TLong = array[0..1000] of integer;
    
    procedure Add(A,B:TLong;var C:TLong);
    {Здесь идет процедура сложения в столбик - ничего интересного}
    procedure MulByShort(A:TLong;B:integer;var C:TLong); {умножение длинного на короткое}
        var i:integer;
    begin
        initByZero(C);{инициализация C нулями}
        for i:=1 to B do Add(C,A,C);
    end;

    Найдено в решении олимпиадной задачи на FreePascal. Обратите внимание на особо остроумный алгоритм умножения: надо же до такого додуматься. Также интересно, чем мотивирована передача массивов по значению.

    frp, 28 Марта 2010

    Комментарии (9)
  4. Java / Говнокод #2845

    +82.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    for (int i = 0; i < list.size(); i++) {
            SpecialItem item = list.get(i);
            if (item != null) {
              item = null;
            }
    }
    list.clear();

    Неиндийский способ очистить java.util.List от вместимого.

    xrobak, 23 Марта 2010

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

    +137.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for( unsigned int i = 0; i < strlen(str); i++)
    {
        if ( str[i] == '-')
        {
            str[i] = '\0';
            break;
        }
    }

    'strlen' в условии цикла - это вычисление инварианта в теле цикла.
    Вообще этот цикл реально можно заменить одним вызовом 'strchr'

    benderlog, 18 Марта 2010

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

    +160.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if(isset($_POST['add_st']) && $_POST['add_st'] != false && $_POST['add_st'] != '')
    { 
    	if($res=mysql_query("select max(ordering) from category3 where category2=".$cat)) 
    		{
    			$ord=mysql_fetch_row($res);
    			$order=$ord[0]+1;
    		}

    $_POST['add_st'] - из формы с <input type='submit' name='add_st' value='Сохранить' />

    Я уж не говорю, что $order можно было сделать одним запросом

    pasha, 16 Марта 2010

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

    +100.3

    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
    function rgbagl(r,g,b,a:gldouble):trgbagl;
    var
    t:trgbagl;
    begin
    t.r:=r;
    t.g:=g;
    t.b:=b;
    t.a:=a;
    rgbagl:=t;
    end;
    function trgbaintrgbagl(rgba:trgba):trgbagl;
    begin
    trgbaintrgbagl.r:=rgba.r/255;
    trgbaintrgbagl.g:=rgba.g/255;
    trgbaintrgbagl.b:=rgba.b/255;
    trgbaintrgbagl.a:=rgba.a/255;
    end;
    function trgbaglintrgba(rgbagl:trgbagl):trgba;
    begin
    trgbaglintrgba.r:=trunc(rgbagl.r*255);
    trgbaglintrgba.g:=trunc(rgbagl.g*255);
    trgbaglintrgba.b:=trunc(rgbagl.b*255);
    trgbaglintrgba.a:=trunc(rgbagl.a*255);
    end;
    function trgbaglelmintrgbaelm(elm:gldouble):byte;
    begin
    trgbaglelmintrgbaelm:=trunc(elm*255);
    end;
    function trgbaelmintrgbaglelm(elm:byte):gldouble;
    begin
    trgbaelmintrgbaglelm:=elm/255;
    end;

    Вот так вот.

    Говногость, 13 Марта 2010

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

    +79.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if (at == null) {
    	try {
    	throw new NullPointerException();
    	}catch (Exception e) {
    	e.printStackTrace();
    	throw new NullPointerException();
    	}
    }

    проверка корректности полученного аргумента в функции.
    хорошо придумано, что бы не вызывать
    throw new IllegalArgumentException();

    maxt, 13 Марта 2010

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

    +165

    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
    if ($check==0)
    {
      $query = "SELECT id, title, news, author, date FROM news ORDER BY id DESC LIMIT 10";
    }else{
      $query = "SELECT id, title, news, author, date FROM news ORDER BY id LIMIT 10";	
    }
    $result = mysql_query($query,$db);
    $_count=0;
    while($row=mysql_fetch_array($result))
    {  
    	$_count++;
    }
    
    $result = mysql_query($query,$db);
    while($row=mysql_fetch_array($result))
    {  
    ...

    Считаем кол-во строк в mysql-таблице

    qwase, 11 Марта 2010

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

    +60.9

    1. 1
    2. 2
    3. 3
    <a href="game.php?page=buildings&cmd=insert">
    <input style='color:#0F0; font-weight: bold'; type='submit' value='bla-bla-bla'>
    </a>

    Человек ВНЕЗАПНО понял, как сделать рамку вокруг ссылки "как у кнопки".

    Int, 09 Марта 2010

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

    +65.7

    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
    template <class T>
    struct SLinkedListNode
    {
    public:
    	SLinkedListNode* m_pPrev;  ///<  Pointer to previous node.
    	SLinkedListNode* m_pNext;  ///<  Pointer to next node.
    	int Initialize();
    	int Finalize();
    };
    ...
    struct SWaiterNode : public SLinkedListNode<SContainerNode>, public SLinkedListNode<SWaiterListNode>
    {
    ...
    // container node
    struct SContainerNode
    {
    	// no members needed yet (just for masking SLinkedListNode type)
    };
    
    // container
    struct SContainer
    {
    public:
    	SLinkedListNode<SContainerNode>* m_pObjects;

    сначала делаем тимплейтный класс, параметр которого никому не нужен, а потом делаем заглушку для этого параметра.
    нормально.

    kubrinsky, 19 Февраля 2010

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