1. C# / Говнокод #12162

    +112

    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
    switch (materialType.MaterialClass)
    {
        case 1:
            xtraTabControl1.SelectedTabPageIndex = 0;
            gridView1.Focus();
            eanSimpleButton.Enabled = true;
            break;
        case 2:
            xtraTabControl1.SelectedTabPageIndex = 1;
            gridView2.Focus();
            eanSimpleButton.Enabled = false;
            break;
        case 3:
            xtraTabControl1.SelectedTabPageIndex = 3;
            gridView4.Focus();
            eanSimpleButton.Enabled = false;
            break;
        default:
            xtraTabControl1.SelectedTabPageIndex = 2;
            gridView3.Focus();
            eanSimpleButton.Enabled = false;
            break;
    }

    Стандартный такой быдло-производственный код.

    В зависимости от магического числа в БД, в поле material_class, показывается один из четырёх гридов. При этом в реальной базе класса 3 вообще нет - это поле принимает значения 1, 2 и NULL.

    someone, 21 Ноября 2012

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

    +150

    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
    (function($) {
      core = {
        verticalOffset: -390,
        horizontalOffset: 0,
        repositionOnResize: true,
        overlayOpacity: 0.2,
        overlayColor: '#ffffff',
        draggable: true,
        send: 'Отправить',
        ok: 'Продолжить',
        close: 'Закрыть',
        save: 'Сохранить',
        cancel: 'Отмена',
        dialogClass: null,
        alert: function(message, title, callback) {
          if( title == null ) title = 'Alert';
          this._show_mess(title, message, null, 'alert', function(result) {
            if(callback) callback(result);
          });
        },
        confirm: function(message, title, callback) {
          if(title == null) title = 'Подтверждение действия';
            this._show_mess(title, message, null, 'confirm', function(result) {
              if(result) callback(result);
            });
        },
        prompt: function(message, value, title, callback) {
          if( title == null ) title = 'Prompt';
            this._show_mess(title, message, value, 'prompt', function(result) {
            if( callback ) callback(result);
          });
        },
        message: function(title){
          if(title == null) title = '';
          this._show_mess(title, '', '', 'message');
        },
        box_close: function() {
          $('#popup_container').fadeOut(200, function(){
            $('#popup_overlay, #popup_container').remove();
          });
        },
        _show_mess: function(title, msg, value, type, callback) {
          if ($('#popup_container').length > 0) {
            $('#popup_overlay, #popup_container').remove();
          }
          var html = "<div id='popup_container'>" +
            "<table>" +
              "<tbody>" +
              "<tr>" +
                "<td class='tl'/><td class='b'/><td class='tr'/>" +
              "</tr>" +
              "<tr>" +
                "<td class='b'/>" +
                "<td class='body'>" +
                  "<div class='popup_title_wrap'><div class='popup_x_button'/><div id='popup_title'/></div>" +
                  "<div id='popup_progress'><img src='/images/progress.gif' alt='Загрузка...' /></div>" +
                  "<div id='popup_content'/>" +
                  "<div id='popup_message'/>" +
                  "<div id='popup_panel'>" +
                    "<span class='ajax-loader'>&nbsp;</span>" +
                    "<div id='popup_info'/>" +
                    "<input id='popup_ok' type='button' class='button_yes' value='" + this.ok + "'/>" +
                    "<input id='popup_cancel' type='button' class='button_no' value='" + this.cancel + "'/>" +
                    "<input id='popup_close' type='button' class='button_no' value='" + this.close + "'/>" +
                  "</div>" +
                "</td>" +
                "<td class='b'/>" +
              "</tr>" +
              "<tr>" +
                "<td class='bl'/><td class='b'/><td class='br'/>" +
              "</tr>" +
              "</tbody>" +
            "</table>" +
          "</div>";
    
          this._overlay('show');
          $('body').append(html);
          $('#popup_panel input').hide();
          if(this.dialogClass) {
            $('#popup_container').addClass(this.dialogClass);
          }
          var pos = (($.browser.msie && parseInt($.browser.version) <= 6 )||(($(window).height()<480)||($(window).width()<700))) ? 'absolute' : 'fixed';
          $('#popup_container').css({
            position: pos,
            zIndex: 999,
            padding: 0,
            margin: 0
          });

    Govnisti_Diavol, 20 Ноября 2012

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

    +21

    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
    //Было:
    int foo()//                              ;
    {                                        ;  
        int a                                ;
        float b                              ; //В правой части старые 
        typedef int testing                  ; //полезные комментарии
        std::cout << "Ho-ho-ho"              ;
        a=0                                  ;
        b=1.0f                               ;
        if (a==b)//                          ;
        {                                    ;
            std::cout <<"Yet another caption";
            std::cout <<"Hi-hi-hi"           ;
            bar()                            ;
                                             ;
        }                                    ;
        using namespace std                  ;
        for (int i =0;i<10;i++)//            ;
        {                                    ;
                                             ;
            std::cout <<"Hello, world!"      ;
            std::cout <<"Yet another line"   ;
        }                                    ;
        return 0                             ;
                                             ;
    }                                        ;
    
    //Кто-то что-то решил поменять
    //Стало:
    int foo()//                              ;
    {                                        ;  
        int a                                ;
        float b                              ; //В правой части старые 
        typedef int testing                  ; //полезные комментарии
        std::cout << "Ho-ho-ho"              ;
        a=0                                  ;
        b=1.0f                               ;
        if (a==b)//                          ;
        {                                    ;
            std::cout <<"Yet another caption";
            std::cout <<"Hi-hi-hi"           ;
            bar()                            ;
                                             ;
        }                                    ;
        double c;
        //Слева комментарии требующие
        //проверки. Wtf???Зачем здесь с???    
        using namespace std                  ;
        for (int i =0;i<10;i++)//            ;
        {                                    ;
                                             ;
            std::cout <<"Hello, world!"      ;
            std::cout <<"Yet another line"   ;
        }                                    ;
        return 6666                             ;
                                             ;
    }                                        ;
    
    //Быстро определили по линии из точек c
    //запятой место в котором произошло изменение.
    //Если согласились с ним восстанавливаем линию.

    Бесплатная распределенная говносистема контроля версий. Git и SVN нервно курят в сторонке.

    igumnovf, 20 Ноября 2012

    Комментарии (41)
  4. JavaScript / Говнокод #12159

    +123

    1. 1
    2. 2
    var EditParameter = eval($('#droppable1').attr("data"));
    var parameter = eval($('#droppable1').attr("data1"));

    А Вам слабо ?!

    Vasiliy, 20 Ноября 2012

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

    +46

    1. 1
    for($i=0;$i<=100;$i++)echo(!$i?$i:($i%3==0&&$i%5==0?'FizzBuzz':($i%3==0?'Fizz':($i%5==0?'Buzz':$i)))).'<br>';

    FizzBuzz - мое решение.

    pkot, 20 Ноября 2012

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

    −110

    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
    -(void) setEditing:(BOOL)editing animated:(BOOL)animate
    {
        if (indexDeleting != nil)
        {
            [[self.tableView cellForRowAtIndexPath:indexDeleting] willTransitionToState:UITableViewCellStateDefaultMask];
    //        if ([self.parentView.delegate sortArrayCount] /*dict array count*/ && [self.parentView.delegate editArrayCount:indexP.section]/*[[[dictArray objectAtIndex:section] valueForKey:@"edit"] count]*/)
    //        {
    //            [self.parentView.delegate setDeleteFlag:indexP value:@"0"];
    //        }        
        }
        indexDeleting = nil;
        isDeleting = NO;
        isEditing = editing;
    	[super setEditing:editing animated:animate];
    	
    	if (self.tableView.editing == editing)
    	{
    		[self.tableView setEditing:!editing animated:NO];
    	}
    	
    	[self.tableView setEditing:editing animated:animate];
    	[self.tableView reloadData];
    }

    По выражению парней, вынужденных поддерживать это месиво, "Это еще образец чистоты и элегантности".

    QuickNick, 20 Ноября 2012

    Комментарии (16)
  7. Си / Говнокод #12156

    +137

    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
    /* ... */
        HWND    mywnd   = NULL;
    /* ... */
    
    #ifdef WIN32
        mywnd = GetForegroundWindow();
        if(GetWindowLong(mywnd, GWL_WNDPROC)) {
            for(i = 1; i < argc; i++) {
                if(verbose_options(argv[i]) < 0) break;
                switch(argv[i][1]) {
                    case 'f': i++;  break;
                    case 'F': i++;  break;
                    case 'L': i++;  break;
                    case 'a': i++;  break;
                    default: break;
                }
            }
            if(i > argc) i = argc;
            i = 3 - (argc - i);
            if(i > 0) {
                fprintf(stderr,
                    "- GUI mode activated, remember that the tool works also from command-line\n"
                    "  where are available various options like folder scanning, filters and so on\n"
                    "\n");
                /* дальше пляски с извлечением параметров из argv */
            }
        }
    #endif

    Наткнулся на утилиту, которая умеет отличать запуск из гуев и из консоли. Полез глядеть, как сделано, а там вот такие чудеса.

    PascalGovno, 20 Ноября 2012

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

    +117

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    data Pitch = Pitch Integer
    
    pitch t o = Pitch (o*12 + t)
    
    freq (Pitch p) = a4 * 2**(i/12) where
    	i = fromIntegral (p - 57)
    	a4 = 440

    Fai, 20 Ноября 2012

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

    +23

    1. 1
    2. 2
    typedef const AbstractParameter ConstAbstractParameter;
    class Parameter: public ConstAbstractParameter{

    GCC это не компилирует, но в 2008 ms vs компилируется без предупреждений. Я это как увидел, так сразу переписал на

    class Parameter: public AbstractParameter{

    А вот теперь я дома и не могу заснуть. Гложет чувство, что я поступил не правильно. Такое чувство как-будто этот const, пусть и не в рамках стандарта С++, но что-то он делал.

    LispGovno, 20 Ноября 2012

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

    +119

    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
    public static Tuple<t1, t2,="" t3,="" t4,="" t5,="" t6,="" t7,="" tuple=""><t8>> Create<t1, t2,="" t3,="" t4,="" t5,="" t6,="" t7,="" t8="">(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8) {
                return new Tuple<t1, t2,="" t3,="" t4,="" t5,="" t6,="" t7,="" tuple=""><t8>>(item1, item2, item3, item4, item5, item6, item7, new Tuple<t8>(item8));
    
       Int32 IStructuralEquatable.GetHashCode(IEqualityComparer comparer) {
                // We want to have a limited hash in this case.  We'll use the last 8 elements of the tuple
                ITuple t = (ITuple) m_Rest;
                if(t.Size >= 8) { return t.GetHashCode(comparer); }
     
                // In this case, the rest memeber has less than 8 elements so we need to combine some our elements with the elements in rest
                int k = 8 - t.Size;
                switch(k) {
                    case 1:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 2:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 3:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 4:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 5:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item3), comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 6:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item2), comparer.GetHashCode(m_Item3), comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 7:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item1), comparer.GetHashCode(m_Item2), comparer.GetHashCode(m_Item3), comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                }
                Contract.Assert(false, "Missed all cases for computing Tuple hash code");
                return -1;
            }
     
            Int32 ITuple.GetHashCode(IEqualityComparer comparer) {
                return ((IStructuralEquatable) this).GetHashCode(comparer);
            }
            public override string ToString() {
                StringBuilder sb = new StringBuilder();
                sb.Append("(");
                return ((ITuple)this).ToString(sb);
            }
     
            string ITuple.ToString(StringBuilder sb) {
                sb.Append(m_Item1);
                sb.Append(", ");
                sb.Append(m_Item2);
                sb.Append(", ");
                sb.Append(m_Item3);
                sb.Append(", ");
                sb.Append(m_Item4);
                sb.Append(", ");
                sb.Append(m_Item5);
                sb.Append(", ");
                sb.Append(m_Item6);
                sb.Append(", ");
                sb.Append(m_Item7);
                sb.Append(", ");
                return ((ITuple)m_Rest).ToString(sb);
            }

    Давно заприметил в C# кортежи. За них отвечаёт чудесный класс System.Tuple
    http://msdn.microsoft.com/en-us/library/system.tuple.aspx
    Вот стало интересно - как они там это дело реализовали, ведь постоянно вводит новые плюшки в язык.
    Посмотрел и ужаснулся - решили "в лоб" и кортежи обошлись в 1000 строк.
    http://reflector.webtropy.com/default.aspx/4@0/4@0/untmp/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/clr/src/BCL/System/Tuple@cs/1305376/Tuple@cs

    Хотел запостить в #12129. Но он утонул.

    3.14159265, 19 Ноября 2012

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