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

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

    +173

    1. 1
    define("RANDOM_NUM", rand(0, 10000000));

    поясню: кодер думал, что каждый раз будет вызываться функция и генерить новое число, т.к. в коде далее идет ее использование как уникального идентификатора. Скорее всего, это один из первых скриптов того, кто писал.

    jokz, 08 Сентября 2011

    Комментарии (39)
  3. Assembler / Говнокод #7126

    +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
    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
    71. 71
    72. 72
    cmp bl,1
    	je France_jmp
    	cmp ax,380
    	je Bulgaria_jmp
    	cmp ax,383
    	je Slavonia_jmp
    	cmp ax,385
    	je Croatia_jmp
    	mov bx,400
    	mov dx,440
    	call IfAnd
    	cmp bl,1
    	je Germany_jmp
    	jmp next_s
    USA_jmp: jmp USA
    Grinford_jmp: jmp Grinford
    France_jmp: jmp France
    Bulgaria_jmp: jmp Bulgaria
    Slavonia_jmp: jmp Slavonia
    Croatia_jmp: jmp Croatia
    Germany_jmp: jmp Germany
    
    	next_s:
    	mov bx,450
    	mov dx,459
    	call IfAnd
    	cmp bl,1
    	je Japan_jmp
    	mov bx,460
    	mov dx,469
    	call IfAnd
    	cmp bl,1
    	je Russia_jmp
    	cmp ax,471
    	je Taiwan_jmp
    	cmp ax,474
    	je Estonia_jmp
    	cmp ax,475
    	je Litvia_jmp
    	cmp ax,477
    	jmp next_ss
    
    Japan_jmp: jmp Japan
    Russia_jmp: jmp Russia
    Taiwan_jmp: jmp Taiwan
    Estonia_jmp: jmp Estonia
    Litvia_jmp: jmp Latvia
    Lithuania_jmp: jmp Lithuania
    Philippines_jmp: jmp Philippines
    Ukraine_jmp: jmp Ukraine
    Moldova_jmp: jmp Moldova
    Hongkong_jmp: jmp Hongkong
    Britain_jmp: jmp Britain
    Greece_jmp: jmp Greece
    Cyprus_jmp: jmp Cyprus
    Macedonia_jmp: jmp Macedonia
    Malta_jmp: jmp Malta
    Ireland_jmp: jmp Ireland
    Belgium_jmp: jmp Belgium
    Portugal_jmp: jmp Portugal
    Iceland_jmp: jmp Iceland
    Denmark_jmp: jmp Denmark
    next_ss:
    	je Lithuania_jmp
    	cmp ax,480
    	je Philippines_jmp
    	cmp ax,482
    	je Ukraine_jmp
    	cmp ax,484
    	je Moldova_jmp
    	cmp ax,489
    	je Hongkong_jmp

    Прога для проверки правильности штрих-кодов по контрольной сумме и определение страны-производителя. Про таблицы перехода и near-адресацию конечно в те времена еще не догадывался, только начинал учить асм.
    PS: А интерфейс у нее ничего такой был для ассемблера, правда слизал с NU: http://habrastorage.org/storage1/e4efe022/903c7848/d99f7f4f/33d1ed16.png

    Tronix, 01 Июля 2011

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

    +147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    ...
    char det(char a[4][4])
    { float det;
    det=a[0][0]*(a[1][1]*(a[2][2]*a[3][3]-a[3][2]*a[2][3])-a[1][2]*(a[2][1]*a[3][3]-a[2][3]*a[3][1])+a[1][3]*(a[2][1]*a[3][2]-a[2][2]*a[3][1]))
    -a[0][1]*(-a[1][0]*(a[2][2]*a[3][3]-a[3][2]*a[2][3])-a[1][2]*(a[2][0]*a[3][3]-a[3][0]*a[2][3])+a[1][3]*(a[2][0]*a[3][2]-a[3][0]*a[2][2]))
    +a[0][2]*(-a[1][0]*(a[2][1]*a[3][3]-a[3][1]*a[2][3])+a[1][1]*(a[2][0]*a[3][3]-a[3][0]*a[2][3])+a[1][3]*(a[2][0]*a[3][1]-a[2][1]*a[3][0]))
    -a[0][3]*(-a[1][0]*(a[2][1]*a[3][2]-a[3][1]*a[2][2])+a[1][1]*(a[2][0]*a[3][2]-a[3][0]*a[2][2])-a[1][2]*(a[2][0]*a[3][1]-a[3][0]*a[2][1]));
    return(det);
    }; 
    ...

    http://otvet.mail.ru/question/59918103/

    1_and_0, 23 Июня 2011

    Комментарии (39)
  5. C# / Говнокод #7004

    +130

    1. 1
    2. 2
    3. 3
    4. 4
    private static bool? GetBoolFromObject(object o)
            {
                return string.IsNullOrEmpty(o.ToString()) ? (bool?)null : (bool)o;
            }

    и как такое можно только писать...

    testguru, 20 Июня 2011

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

    +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
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    if ( '' !== $qv['second'] ) {
              $this->is_time = true;
              $this->is_date = true;
      }
    
    if ( '' !== $qv['minute'] ) {
            $this->is_time = true;
            $this->is_date = true;
    }
    
    if ( '' !== $qv['hour'] ) {
            $this->is_time = true;
            $this->is_date = true;
    }
    
    if ( $qv['day'] ) {
            if ( ! $this->is_date ) {
                    $this->is_day = true;
                    $this->is_date = true;
            }
    }
    
    if ( $qv['monthnum'] ) {
            if ( ! $this->is_date ) {
                    $this->is_month = true;
                    $this->is_date = true;
            }
    }
    
    if ( $qv['year'] ) {
            if ( ! $this->is_date ) {
                    $this->is_year = true;
                    $this->is_date = true;
            }
    }
    
    if ( $qv['m'] ) {
            $this->is_date = true;
            if ( strlen($qv['m']) > 9 ) {
                    $this->is_time = true;
            } else if ( strlen($qv['m']) > 7 ) {
                    $this->is_day = true;
            } else if ( strlen($qv['m']) > 5 ) {
                    $this->is_month = true;
            } else {
                    $this->is_year = true;
            }
    }

    ВротПресс

    telnet, 20 Мая 2011

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

    +168

    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
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    #define TPLM Tuple(TPLMOVE) + 
    #define TPLC Tuple(TPLCOPY) + 
    #define TPL Tuple() + 
    //#define GTPL Tuple() +
    #define TPLERROR(t) { memcpy(0, 0, 1); }
    
    #define TPLMOVE    1 // copy to tuple, memset 0 original. = destruct dest, copy to dest.
    #define TPLCOPY    2 // copy constructor = destruct dest, copy to dest
    #define TPLGET    3 // destruct all values :)
    
    #include <memory.h>
    #include <math.h>
    #include <stdio.h>
    #include <typeinfo>
    #include <string.h>
    
    #define max(a, b) (((a) > (b)) ? (a) : (b))
    #define min(a, b) (((a) < (b)) ? (a) : (b))
    
    unsigned int mcrc(char* name, unsigned int sz){
        unsigned int ret=0; if(!sz) sz=(unsigned int)strlen(name);
        char*t=name+sz; int p=0;
        while(name<t){
            *(((char*)&ret)+p)+=*name; p++;
            if(p>=4) p=0; name++;
        }
    return ret;
    }
    
    struct Tupled{ unsigned int sz, type; void *v; char data[0]; };
    
    class Tuple{
        int count, set, dusz, dasz;
        unsigned char *data;
        int type; int adel; 
    
    public:
        Tuple(){ count=0; set=0; type=0; dusz=0; dasz=0; data=0; adel=0; }
        Tuple(int t){ type=t; }
    
        ~Tuple(){ if(count!=set) TPLERROR("~Tuple"); delete data; }
    
        Tuple(Tuple &t){
            count=t.count; set=t.set; dusz=t.dusz; dasz=t.dasz; data=t.data;
            t.count=0; t.set=0; t.data=0; adel=1;
        }
    
        template <class T>
        Tuple& operator+(T &t){ if(!adel) Add(&t, sizeof(t), t); else Del(&t, sizeof(t), t); return *this; }
        template <class T>
        Tuple& operator-(T &t){ if(!adel) Add(&t, sizeof(t), t); else Del(&t, sizeof(t), t); return *this; }
    
    /* Операторы '*', '/', ',', '>', '<' код идентичен */
    
        template <class T>
        void Add(void *v, int s, T &t){
            if(dasz-dusz<s+4+(int)sizeof(void*)){
                unsigned char *ldata=data;
                data=new unsigned char[dasz+max(128, s+4)];
                memcpy(data, ldata, dasz);
                dasz+=max(128, s);                    
                delete [] ldata;
            }
            Tupled &d=*(Tupled*)(data+dusz);
            d.sz=s;
            memcpy(&d.v, v, sizeof(void*));
            if(type==TPLCOPY){ *(T*)d.data=t; } else memcpy(d.data, v, s);
            if(type==TPLMOVE) t.~T();
    
            d.type=mcrc((char*)typeid(t).name(), 0);
            dusz+=sizeof(Tupled)+s; count++;
        }
    
        template <class T>
        void Del(void *v, int s, T &t){
            if(set>=count){ TPLERROR("Tuple::Set"); return ; }
            unsigned char *p=GetData(set);
            if(!p){ TPLERROR("Tuple::NoData"); return ; }
    
            Tupled &d=*(Tupled*)p;
            unsigned int tp=mcrc((char*)typeid(t).name(), 0);
            if(tp!=d.type){ TPLERROR("Tuple::TYPE"); return ;}
    
            t.~T();
            if(d.sz!=s){ TPLERROR("Tuple::SIZE"); return ;}
            memcpy(v, d.data, d.sz);
            
            set++;
        }
    
        unsigned char* GetData(int c){
            if(c>=count) return 0;
            unsigned char *p=data;
            for(int i=0; i<c; i++){
                p+=sizeof(Tupled)+*(int*)p;
            }
            return p;
        }
    };

    Очередной самобытный велосипед от микеля.

    http://rsdn.ru/forum/src/4218954.aspx

    cutwater, 02 Апреля 2011

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

    +122

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    var product=dataContext.Products.Where(p=>p.Name == "SomeProductName")
    
    if (products.Count() != 0)
                {
                    return new Product
                    {
                        ProductId = products.First().AM_PRODUCT_ID,
                        ProductName = products.First().PRODUCT_NAME,
                        IsActive = products.First().IS_ACTIVE
                    };
                }

    this way of selecting product from table by its name generate 4 queries instead 1 ...

    O_O, 28 Февраля 2011

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

    +102

    1. 1
    while dlg_SmplSpk.ShowModal = mrOk do ;

    Узрел такое! Срочно к себе в рецепты прогрессивного программирования!
    Сделано это для того, чтобы окно не закрывалось при подтверждении всех сделанных действий.
    Закрываться должно только при нажатии кнопочки "Закрыть".
    Отсюда непонятен ход мыслей автора сия творения.

    Grizzly, 11 Февраля 2011

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

    +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
    /**
     * Standard QWidget Constructor
     */
    SeismicSelectionDG::SeismicSelectionDG(QWidget *parent) 
      : QDialog(parent), ui(new Ui::SeismicSelectionDG)
    {
    ...
    }
    
    /**
     * Destructor
     */
    SeismicSelectionDG::~SeismicSelectionDG()
    {
      if(ui) delete ui;
    }
    
    /**
     * Set title to dialog box
     * @param title The title for dialog box
     */
    void SeismicSelectionDG::setDialogTitle(const QString& title)
    {
      QDialog::setWindowTitle(title);
    }

    Обратим внимание как мой коллега китаец тщательно документирует код. метод setDialogTitle - в особенности. А учитывая что QDialog::setWindowTitle - библиотечный метод, необходимость оборачивать его в свой метод полностью отсутствует. Также глупость в деструкторе - для delete необязательно проверять указатель на 0.

    kitaec, 09 Февраля 2011

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

    −133

    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
    Процедура БазоваяПриИзменении(Элемент)
    		Если ЭтаФорма.ЕдОтчетов = Истина Тогда
    			ЭтаФорма.ВДаллах = Ложь; 
    			ЭтаФорма.ВРублях = Ложь; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		Иначе
    			ЭтаФорма.ВДаллах = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		КонецЕсли;	
    КонецПроцедуры
    	
    Процедура ВДаллахПриИзменении(Элемент)
    		Если ЭтаФорма.ВДаллах = Истина Тогда
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Ложь; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		Иначе
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		КонецЕсли;	
    КонецПроцедуры
    	
    Процедура Ед_храненияОстПриИзменении(Элемент)
    		Если ЭтаФорма.Ед_храненияОст = Истина Тогда
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Ложь; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		Иначе
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		КонецЕсли;	
    КонецПроцедуры
    	
    Процедура ВРубляхПриИзменении(Элемент)
    		Если ЭтаФорма.ВРублях = Истина Тогда
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		Иначе
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		КонецЕсли;
    КонецПроцедуры

    Замечательная реализация радиобаттонов через флажки

    ingenuus, 16 Декабря 2010

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