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

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

    +73

    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
    // Current Month Days
                for (int i = 1; i <= _nDaysInMonth; i++) {
                    if (_myPrefs.getIfConfigured()) {
                        if (_regionWithHolidays != null && _regionWithHolidays.length > 0) {
    
                            String holidayDateStringFormat = String.valueOf(i) + "-" + getMonthAsString(nCurrentMonth) + "-" + _strCurrentSelectedYear;
                            for (int index = 0; index < _regionWithHolidays.length; index++) {
                                if (_regionWithHolidays[index].getHolidayDate().equals(holidayDateStringFormat)) {
                                    list.add(String.valueOf(i) + "-RED" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                                }
                            }
                        }
                    }
    
                    if (i == getCurrentDayOfMonth()) {
                        list.add(String.valueOf(i) + "-BLUE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                    } else {
                        list.add(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                        if (_myPrefs.getIfConfigured()) {
                            if (_regionWithHolidays != null && _regionWithHolidays.length != 0) {
                                String otherDates = String.valueOf(i) + "-" + getMonthAsString(nCurrentMonth) + "-" + _strCurrentSelectedYear;
                                for (int index = 0; index < _regionWithHolidays.length; index++) {
                                    if (_regionWithHolidays[index].getHolidayDate().equals(otherDates)) {
                                        list.remove(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
                                    }
                                }
                            }
                        }
                    }
                }
    
                // some code
    
                for (int i = 1; i <= _nDaysInMonth; i++) {
                    String[] day_color = list.get(i).split("-");
                    if (day_color[1].equals("WHITE")) {
                        //active dates in current month
                        dayNumberView.setTextColor(getResources().getColor(R.color.darkGrey_font));
                    } else if (day_color[1].equals("BLUE")) {
                        //current date in current month
                        holder.tvTime.setTextColor(getResources().getColor(R.color.whitetranslucent));
                        dayNumberView.setTextColor(getResources().getColor(R.color.whitetranslucent));
                        cell.setBackgroundResource(R.color.blue_font);
                    } else if (day_color[1].equals("RED")) {
                        //active dates in current month
                        dayNumberView.setTextColor(getResources().getColor(R.color.red));
                    }
                }

    Это приложение с десятками тысяч пользователей. Мне выпала честь править в нем баги. На сколько я могу судить задача этого куска была отобразить календарь на текущий месяц на экране и подсветить WHITE - обычные дни, BLUE - текущий, RED - выходные и праздничные. Итак в чем соль:
    1) сама соль метода - в одном цикле создается список строк вида НОМЕР-ЦВЕТ-МЕСЯЦ-ГОД, чуть ниже в аналогичном цикле эти строки разбиваются по "-" и сравнивается по строковому значению цвета. Кроме того день может быть или текущим или праздничным, но никак не одновременно.
    2) два практически одинаковых куска кода по 10 строк - строки 4-13 и 19-28, первый при определенных условия добавляет ПРАЗДНИЧНЫЙ день в календарь, потом день в 16-18 строках день всегда добавляется еще раз этот день, либо обычный(WHITE) либо текущий(BLUE), и выполняется второй кусок и если проходят те же условия т.е. фактические если был добавлен праздничный день(RED) то удаляется добавленный ОБЫЧНЫЙ день. Баг был в том что если текущий день был еще и праздничным то они задваивались. Сделать по нормальному - если день уже добавлен, не добавлять еще раз или сделать continue главному циклу. Не говоря уже о том чтобы добавить break после 9 строки, видно автор не знал про эти операторы.

    TAX, 19 Июня 2014

    Комментарии (5)
  3. Java / Говнокод #16186

    +79

    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
    public Long getRecordCount() {
            long result = 0;
            if(pfrFile != null){
                if(pfrFile.getПачкаВходящихДокументов().getРАСЧЕТ_ПО_СТРАХОВЫМ_ВЗНОСАМ_НА_ОПС_И_ОМС_ПЛАТЕЛЬЩИКАМИ_ПРОИЗВОДЯЩИМИ_ВЫПЛАТЫ_ФЛ() != null){
                    result++;
                }
                if(pfrFile.getПачкаВходящихДокументов().getРСВ1() != null){
                    result++;
                }
                if(pfrFile.getПачкаВходящихДокументов().getРАСЧЕТ_ПО_СТРАХОВЫМ_ВЗНОСАМ_НА_ОПС_И_ОМС_ПЛАТЕЛЬЩИКАМИ_СВ_ПРОИЗВОДЯЩИМИ_ВЫПЛАТЫ_ФЛ_НАЧИНАЯ_С_2012_ГОДА() != null){
                    result++;
                }
                if(pfrFile.getПачкаВходящихДокументов().getРАСЧЕТ_ПО_СТРАХОВЫМ_ВЗНОСАМ_НА_ОПС_И_ОМС_ПЛАТЕЛЬЩИКАМИ_СВ_ПРОИЗВОДЯЩИМИ_ВЫПЛАТЫ_ФЛ_НАЧИНАЯ_С_2013_ГОДА() != null){
                    result++;
                }
    ...
            return result;
    }

    :D

    skobets, 18 Июня 2014

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

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    while($row = $this->_db->fetchRow($qry)){
        $module_name = stripslashes($row["module_name"]);
        $permisos = array();
        $permisos["A"]=(($row["permission_value"] & 1)==1)?1:0;
        $permisos["E"]=(($row["permission_value"] & 2)==2)?1:0;
        $permisos["D"]=(($row["permission_value"] & 4)==4)?1:0;
        $permisos["L"]=(($row["permission_value"] & 8)==8)?1:0;
        $permisos["W"]=(($row["permission_value"] & 16)==16)?1:0;
        $permisos["V"]=(($row["permission_value"] & 32)==32)?1:0;
        $access_array[$module_name]=$permisos;
    }

    Испанский ACL

    stereojazz, 16 Июня 2014

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

    −102

    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
    x = 1;
    					x = (x >> 11);
    					x = (x + 1);
    					x = (x >> 9);
    					x = (x + 1);
    					x = (x >> 7);
    					x = (x + 1);
    					x = (x >> 5);
    					x = (x + 1);
    					x = (x >> 3);
    					x = (x + 1);
    					x = (x >> 10);
    					x = (x + 1);
    					x = (x >> 8);
    					x = (x + 1);
    					x = (x >> 6);
    					x = (x + 1);
    					x = (x >> 4);
    					x = (x + 1);
    					x = (x >> 2);
    					x = (x + 1);
    					if (x == 1)
    					{
    						ge.ha = true;
    					};

    из недр не менее изощрённого распковщика обфусцированного xml

    makc3d, 13 Июня 2014

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

    +58

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Poor man' link time code generation:
    
    #include "main.cpp"
    #include "frame.cpp"
    #include "func.cpp"
    #include "account.cpp"
    #include "advancer.cpp"
    #include "audit.cpp"
    #include "cpio.cpp"
    
    g++ -whole-program -o my books.exe -O3 includeall.cpp

    http://blogs.msdn.com/b/oldnewthing/archive/2014/06/06/10531604.aspx

    someone, 07 Июня 2014

    Комментарии (5)
  7. Куча / Говнокод #16107

    +140

    1. 1
    <div contentediotable="true">

    AjiTae, 04 Июня 2014

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

    +154

    1. 1
    $data_move = date("d.m.Y", mktime(0, 0, 0, (int)date("m",time()), (int)date("d",time()), (int)date("Y",time())));

    Вишенка даже не в том, что афтар - кармический индус, а в том, что теоретически возможна ситуация, при которой date("m",time()) выполняется в последнюю миллисекунду предыдущего месяца, а date("d",time()) - в первую следующего.

    catgav, 03 Июня 2014

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

    +156

    1. 1
    $result['BIRTHDATE'] = (($date['day'] < 10) ? '0'.$date['day'] : $date['day']).'.'.(($date['month'] < 10) ? '0'.$date['month'] : $date['month.'] ).'.'.$date['year'];

    Пых и даты.

    bormand, 28 Мая 2014

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

    +11

    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
    QString Factory::lifeEqual(WidgetEnum::SearchWidgetSet param) {
        switch (param) {
        case WidgetEnum::station:
            return "Станция";
        case WidgetEnum::water_area:
            return "Акватория";
        case WidgetEnum::station_coordinates:
            return "Координаты станции";
        case WidgetEnum::volume_of_filtered_water:
            return "Объем отфильтрованной воды";
        case WidgetEnum::chlorophyll_a_concentration:
            return "Концентрация хлорофила а";
        case WidgetEnum::chlorophyll_b_concentration:
            return "Концентрация хлорофила b";
        case WidgetEnum::chlorophyll_c_concentration:
            return "Концентрация хлорофила c";
        case WidgetEnum::A665k:
            return "A(665k";
        case WidgetEnum::pigment_index:
            return "Индекс пигмента";
        case WidgetEnum::pheopigments:
            return "Феопигменты";
        case WidgetEnum::upholding_sample_time:
            return "Время выдержки образца";
        case WidgetEnum::concetrated_sample_volume:
            return "Объемная концентрация образца";
        case WidgetEnum::cameras_viewed_number:
            return "Качество камеры";
        case WidgetEnum::total:
            return "Общая численость";
        case WidgetEnum::total_species:
            return "Число видов в пробе";
        case WidgetEnum::total_biomass:
            return "Общая биомасса";
        case WidgetEnum::total_percent:
            return "Итоговый процент";
        case WidgetEnum::biomass_percent:
            return "Процент биомасс";
        case WidgetEnum::percentage_of_total:
            return  "Процент от общего числа";
        case WidgetEnum::percentage_of_the_total_biomass:
            return "Процент от общего числа биомассы";
        case WidgetEnum::number:
            return "Номер";
        case WidgetEnum::biomass:
            return "Биомасса";
        case WidgetEnum::total_species_in_group:
            return "Всего видов в группе";
        case WidgetEnum::name:
            return "Название";
        case WidgetEnum::name_alt:
            return "Альтернативное название";
        case WidgetEnum::name_rus:
            return "Русское название";
        case WidgetEnum::fishing_gear:
            return "Рыболовный аппарат";
        case WidgetEnum::assessment_of_zooplankton:
            return "Оценка зоопланктона";
        case WidgetEnum::date:
            return "Дата";
        case WidgetEnum::Station_water_area:
            return "";
        case WidgetEnum::groupsOfPh_name:
            return "Название группы";
        case WidgetEnum::groups:
            return "Вид";
        case WidgetEnum::error:
            return "errorA";
        case WidgetEnum::chlorinity:
            return "chlorinity";
        case WidgetEnum::density:
            return "density";
        case WidgetEnum::volume:
            return "volume";
        case WidgetEnum::o2_mg_l:
            return "o2_mg_l";
        case WidgetEnum::o2_ml_l:
            return "o2_ml_l";
        case WidgetEnum::bod5:
            return "bod5";
        case WidgetEnum::ph:
            return "ph";
        case WidgetEnum::alk:
            return "alk";
        case WidgetEnum::no2:
            return "no2";
        case WidgetEnum::no3:
            return "no3";
        case WidgetEnum::total_n:
            return "total_n";
        case WidgetEnum::po4:
            return "po4";
        case WidgetEnum::total_p:
            return "total_p";
        case WidgetEnum::si:
            return "si";
    And etc.....

    В таком духе имеется строк 300, и если бы выход здравого смысла из спячки и наличие базы данных, 50 строчек которыми все это стало, с течением времени могло бы превратиться в 1000 строк, если не больше.
    И хоть это банальный гавногод, жалко трудов и времени на него затраченных. А так хоть канет в бездне говногода, а не в бездне моего винта.

    smith599, 25 Мая 2014

    Комментарии (5)
  11. Java / Говнокод #16010

    +78

    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
    public static String[] Filtr( String[] mas )
    		{
    			for(int i=0;i<mas.length;i++)
    			{
    				if ("А".equals(mas[i])){
    					mas[i] = "а";
    				}
    				if ("Б".equals(mas[i])){
    					mas[i] = "б";
    				}
    				if ("В".equals(mas[i])){
    					mas[i] = "в";
    				}
    				if ("Г".equals(mas[i])){
    					mas[i] = "г";
    				}
    				if ("Д".equals(mas[i])){
    					mas[i] = "д";
    				}
    				if ("Е".equals(mas[i])){
    					mas[i] = "е";
    				}
    				if ("Ё".equals(mas[i])){
    
    
                                    .....//и т.д.
    
    
    	                        if ("Э".equals(mas[i])){
    					mas[i] = "э";
    				}
    				if ("Ю".equals(mas[i])){
    					mas[i] = "ю";
    				}
    				if ("Я".equals(mas[i])){
    					mas[i] = "я";
    				}
    				if ("Й".equals(mas[i])){
    					mas[i] = "й";
    				}
    			}
                            for(int i=0;i<mas.length;i++)
    				{
    				
    					if(
    						(mas[i].equals("а") == false) && 
    						(mas[i].equals("б") == false) && 
    						(mas[i].equals("в") == false) && 
    						(mas[i].equals("г") == false) && 
    						(mas[i].equals("д") == false) && 
    						(mas[i].equals("е") == false) && 
    						(mas[i].equals("ё") == false) && 
    						(mas[i].equals("ж") == false) && 
    						(mas[i].equals("з") == false) &&
    						(mas[i].equals("и") == false) && 
    						(mas[i].equals("к") == false) && 
    						(mas[i].equals("л") == false) && 
    						(mas[i].equals("м") == false) && 
    						(mas[i].equals("н") == false) && 
    						(mas[i].equals("о") == false) && 
    						(mas[i].equals("п") == false) && 
    						(mas[i].equals("р") == false) && 
    						(mas[i].equals("с") == false) && 
    						(mas[i].equals("т") == false) && 
    						(mas[i].equals("у") == false) && 
    						(mas[i].equals("ф") == false) && 
    						(mas[i].equals("х") == false) && 
    						(mas[i].equals("ц") == false) && 
    						(mas[i].equals("ч") == false) && 
    						(mas[i].equals("ш") == false) && 
    						(mas[i].equals("щ") == false) && 
    						(mas[i].equals("э") == false) && 
    						(mas[i].equals("ю") == false) && 
    						(mas[i].equals("я") == false) && 
    						(mas[i].equals("ъ") == false) && 
    						(mas[i].equals("ь") == false) && 
    						(mas[i].equals("ы") == false) && 
    						(mas[i].equals("й") == false) &&
    						(mas[i].equals(" ") == false))
    					{
    						mas = Del(mas, i);
    						i--;
    					}	;
    			for(int k=0;(k+1)<mas.length;k++)
    					{
    						if(mas[k].equals(" ") && mas[k+1].equals(" "))
    						{
    							mas = Del(mas, k);
    							k--;
    						}
    					}
    			}
    			return mas;	
    		}

    lispocoder, 18 Мая 2014

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