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

    −121

    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
    Для каждого СтрГотИзд Из ГотовыеИзделия Цикл
    	
    	СсылкаДСЕ 		= ОпределитьДСЕГотовоеИзделиеПоНаименованию(СтрГотИзд.Значение);
    	СсылкаЗаписьРС 	= НайтиПервуюЗаписьРС_ПоДСЕ(СсылкаДСЕ, ЭтотОбъект.НаДату);
    	
    	Если СсылкаЗаписьРС = Неопределено Тогда
    		Предупреждение("На эту дату данных не существует!");
    	Иначе
    		
    		
    		ФормаИндикатора.КомментарийОбработкиДанных  = "Построение отчета: " + СсылкаДСЕ.ВидПредмета + " - " + СсылкаДСЕ.Наименование + ""; 
    		
    		ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные1, 1, СсылкаДСЕ, СсылкаЗаписьРС.Применяемость, Неопределено, ФормаИндикатора);
    		Выборка2Ур = НайтиЗаписиРС_ПоКодуДСЕГл(СсылкаЗаписьРС.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    		Пока Выборка2Ур.Следующий() цикл
    			ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные2, 2, Выборка2Ур.ДСЕВходящий, Выборка2Ур.Применяемость, Выборка2Ур, ФормаИндикатора);
    			
    			Выборка3Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка2Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    			Пока Выборка3Ур.Следующий() цикл
    				ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные3, 3, Выборка3Ур.ДСЕВходящий, Выборка3Ур.Применяемость, Выборка3Ур, ФормаИндикатора);
    				
    				Выборка4Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка3Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    				Пока Выборка4Ур.Следующий() цикл
    					ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные4, 4, Выборка4Ур.ДСЕВходящий, Выборка4Ур.Применяемость, Выборка4Ур, ФормаИндикатора);
    					
    					Выборка5Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка4Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    					Пока Выборка5Ур.Следующий() цикл
    						ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные5, 5, Выборка5Ур.ДСЕВходящий, Выборка5Ур.Применяемость, Выборка5Ур, ФормаИндикатора);
    						
    						Выборка6Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка5Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    						Пока Выборка6Ур.Следующий() цикл
    							ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные6, 6, Выборка6Ур.ДСЕВходящий, Выборка6Ур.Применяемость, Выборка6Ур, ФормаИндикатора);
    							
    							Выборка7Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка6Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    							Пока Выборка7Ур.Следующий() цикл
    								ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные7, 7, Выборка7Ур.ДСЕВходящий, Выборка7Ур.Применяемость, Выборка7Ур, ФормаИндикатора);
    								
    								Выборка8Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка7Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    								Пока Выборка8Ур.Следующий() цикл
    									ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные8, 8, Выборка8Ур.ДСЕВходящий, Выборка8Ур.Применяемость, Выборка8Ур, ФормаИндикатора);
    									
    									Выборка9Ур = НайтиЗаписиРС_ПоКодуДСЕГл(Выборка8Ур.НомерЗаписиРСДСЕВх, НаДату).Выбрать();
    									Пока Выборка9Ур.Следующий() цикл
    										ОбластьДанныеДобавить(ПолеТабДок, ОбластьДанные9, 9, Выборка9Ур.ДСЕВходящий, Выборка9Ур.Применяемость, Выборка9Ур, ФормаИндикатора);
    									КонецЦикла;
    								КонецЦикла;
    							КонецЦикла;
    						КонецЦикла;
    					КонецЦикла;
    				КонецЦикла;
    			КонецЦикла;
    		КонецЦикла;
    	КонецЕсли;
    КонецЦикла;
    
    
    
    Функция НайтиЗаписиРС_ПоКодуДСЕГл(КодДСЕГл, НаДату, ДопустимаяЗамена = 0) Экспорт
    	Запрос = Новый Запрос;
    	Запрос.Текст = 
    	"ВЫБРАТЬ
    	|	СтруктураПриборов1СрезПоследних.ДСЕГлавный,
    	|	СтруктураПриборов1СрезПоследних.ДСЕВходящий КАК ДСЕВходящий,
    	|	СтруктураПриборов1СрезПоследних.Прибор,
    	|	СтруктураПриборов1СрезПоследних.НомерЗаписиРСДСЕВх,
    	|	СтруктураПриборов1СрезПоследних.НомерЗаписиРСДСЕГл,
    	|	СтруктураПриборов1СрезПоследних.ДопустимаяЗамена,
    	|	СтруктураПриборов1СрезПоследних.Применяемость,
    	|	СтруктураПриборов1СрезПоследних.ДСЕВходящий.Ссылка,
    	|	СтруктураПриборов1СрезПоследних.ДСЕВходящий.ВидПредмета КАК ВидПредмета,
    	|	СтруктураПриборов1СрезПоследних.ДСЕВходящий.ВидПредмета.Порядок КАК ДСЕВходящийВидПредметаПорядок,
    	|	СтруктураПриборов1СрезПоследних.ДСЕВходящий.Код КАК Код,
    	|	СтруктураПриборов1СрезПоследних.Заимствованные,
    	|	СтруктураПриборов1СрезПоследних.Период,
    	|	СтруктураПриборов1СрезПоследних.ДатаОкончанияИспользования,
    	|	СтруктураПриборов1СрезПоследних.ВводНового,
    	|	СтруктураПриборов1СрезПоследних.ИзменениеСоставаИзделия
    	|ИЗ
    	|	РегистрСведений.СтруктураПриборов1.СрезПоследних(
    	|		&НаДату,
    	|		НомерЗаписиРСДСЕГл = &КодДСЕГл
    	|		    И (ДатаОкончанияИспользования = &ПустаяДата
    	|		        ИЛИ ДатаОкончанияИспользования > &НаДату)
    	|		    И ДопустимаяЗамена = &ДопустимаяЗамена) КАК СтруктураПриборов1СрезПоследних
    	|
    	|УПОРЯДОЧИТЬ ПО
    	|	ДСЕВходящийВидПредметаПорядок,
    	|	Код";
    	Запрос.УстановитьПараметр("НаДату", 	НаДату);
    	Запрос.УстановитьПараметр("КодДСЕГл", 	КодДСЕГл);
    	Запрос.УстановитьПараметр("ПустаяДата", '00010101');
    	Запрос.УстановитьПараметр("ДопустимаяЗамена", ДопустимаяЗамена);
    	Возврат(Запрос.Выполнить());
    КонецФункции

    Прелесть! Выполняется около минуты. При чем этот код дублируется почти во всех отчетах.
    После оптимизации объем кода сократился в 3 раза, а время выполнения составило 1-2 сек.

    Ykov89, 29 Ноября 2012

    Комментарии (9)
  2. 1C / Говнокод #12217

    −122

    1. 1
    2. 2
    3. 3
    4. 4
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() > 0 Цикл
           // что-то делаем
    КонецЦикла;

    Argonavt, 29 Ноября 2012

    Комментарии (3)
  3. Си / Говнокод #12215

    +139

    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
    /* В комментариях то что хотел Автор от своей программы 	*/
    /* Радует однако, что она компилируется и во время		*/
    /* работы не выдает ни каких ошибок				*/
    /* Порядок операторов сохранен.					*/
    /* Тот же код только вырезанно "лишнее".			*/
    
    /* Эта ф-ия находится в другом cpp файле */
    float f(float x, float y)
    {
    	/* Тут что-то происходит с x и y */
    	return x, y;
    }
    
    void main(void)
    {
    	float **m;
    
    	/* ... */
    	float f(float x, float y);
    	/* ... */
    
    	/* Задается N					*/
    	float N;
    	/* ... */
    
    	/* Выделяется память под массив m[N][2] 	*/
    	m = (float **)malloc(sizeof(float*));
    	for(i = 0; i < N; i++)
    	{
    		m[i] = (float*)malloc(sizeof(float*) * 2);
    	}
    
    	/* ... */
    	for(i = 0; i < N; i++)
    	{
    		/* Массив заполняется числами						*/
    		/* В m[i][] должны быть записанны числа x, y измененый ф-ей f 		*/
    		/* т. е.	m[i][0] = xf						*/
    		/*		m[i][1] = yf						*/
    		for(j = 0; j < 2; j++)
    		{
    			m[i][j] = f(x, y);
    			/* ... */
    		}
    	}
    
    	/* ... */
    }

    dreesto, 28 Ноября 2012

    Комментарии (71)
  4. Куча / Говнокод #12214

    +130

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    perft :: Int -> Position -> Int
    perft depth pos 
    	| depth <= 0 = 1
    	| otherwise  = sum . map (perft $ depth - 1) $ legalPositions where
    		legalPositions = filter isLegalPosition nextpositions
    		nextpositions = map (\move -> makeMove move pos) $ (moves pos)

    Fai, 28 Ноября 2012

    Комментарии (59)
  5. JavaScript / Говнокод #12213

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Object.prototype.merge = function(objects){
        var newObj = this;
        for(var key in objects){
            key!='merge'?newObj[key] = objects[key]:void(0);
        }
        return newObj;
    };

    Выглядит ужасно, но ничего другого не придумал. Подскажите как правильно?)
    P.S. Если убрать проверку "key!='merge'?" то в объекте становится на 1 ключ больше('merge')

    Stud, 28 Ноября 2012

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

    +54

    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
    if($i!='0')
                {
                        $query="SELECT DATE_ADD(CURDATE(), INTERVAL ".$i." MONTH)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_newmonth=$temp_date_array[0];
                       
                        $query="SELECT DAYOFMONTH('".$temp_date_newmonth."');";
                        $day=mysql_fetch_row(mysql_query($query));
                       
                        $query="SELECT DATE_ADD('".$temp_date_newmonth."', INTERVAL -".($day[0]-1)." DAY)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date=$temp_date_array[0];
                       
                        $query="SELECT DATE_ADD('".$temp_date."', INTERVAL 1 MONTH);";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_end=$temp_date_array[0];
                }
                else
                {
                        $query="SELECT CURDATE();";    
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date=$temp_date_array[0];
                       
                        $query="SELECT DAYOFMONTH('".$temp_date."');";
                        $day=mysql_fetch_row(mysql_query($query));
                       
                        $query="SELECT DATE_ADD(CURDATE(), INTERVAL 1 MONTH)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_end_newmonth=$temp_date_array[0];
                       
                        $query="SELECT DATE_ADD('".$temp_date_end_newmonth."', INTERVAL -".($day[0]-1)." DAY)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_end=$temp_date_array[0];
                }
                $query="SELECT MONTH('".$temp_date."');";

    http://forum.php.su/topic.php?forum=69&topic=50&v=#135410099 3

    sKaa, 28 Ноября 2012

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

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if ((act_type == 15) || (act_type == 24)) {
    } else {
                if (duration != null)
                dts.setDuration(dts.getDuration().add(duration));
    }

    Вся пунктуация сохранена и НИЧЕГО НЕ ВЫРЕЗАНО
    Волшебный if
    Пруф [[ скрыт ]]
    строка 112 - 116

    smpl, 28 Ноября 2012

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

    +51

    1. 1
    2. 2
    3. 3
    4. 4
    $needMoreDataWM = ($exchange->getSumTo()->getCurrency()->getSystem()->getModule() == 'WebMoney' || $exchange->getSumFrom()->getCurrency()->getSystem()->getModule() == 'WebMoney') || $this->getRequest()->request->get('user_wmid');
    $needMoreDataWM = $needMoreDataWM && !$user->getWmid();
    $needMoreDataBank = ($exchange->getSumTo()->getCurrency()->getSystem()->getClass() == 'bank') && !$user->getVat() || $this->getRequest()->request->get('user_vat');
    $needMoreData = $needMoreDataBank || $needMoreDataWM || !($user->getFullname() && $user->getPassport()) || $this->getRequest()->request->get('user_fullname') || $this->getRequest()->request->get('user_passport');

    А что поделаешь, Doctrine принуждает

    nick4fake, 28 Ноября 2012

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

    +12

    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
    #include <stdio.h>
    #include <type_traits>
    #include <string>
    struct hack_t{};
    template<class TYPE>static hack_t operator&(const TYPE&,hack_t){return hack_t();}
    int main()
    {
      struct type{};
      std::string var="win";
      #define get_meta(var)[&]()->bool{hack_t unnamed;hack_t foo(var&unnamed);return std::is_function<decltype(foo)>::value;}()
      bool result_0=get_meta(var);
      bool result_1=get_meta(type);
      #undef get_meta
      printf("get_meta(var) == %s\n",result_0?"true":"false");
      printf("get_meta(type) == %s\n",result_1?"true":"false");
      return 0;
    }

    Код отличает переменную от типа.
    http://ideone.com/t7BBO4
    Сами знаете откуда.

    LispGovno, 27 Ноября 2012

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

    +10

    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
    //В mathc.hpp:
    typedef float import (float);
    
    //В неком cpp функция:
    float cm() {
            import calcFpu;
           //...
            float src = //...
            float res = calcFpu(src);
            return res;
    }
    
    //В mathc.cpp:
    void calcFpu(float){
    //...
    void calcSSE(float){
    //...

    Мои глаза... В перлы.
    http://ideone.com/RBAMyv

    LispGovno, 27 Ноября 2012

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