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

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

    +13

    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
    CompoundExpression*
    CompoundExpression::newBinaryExpression(
    	BasicBinaryOperation::Type operation,
    	const Expression *x,
    	const Expression *y
    ) {
    	vector<Expression::const_pointer> params(2);
    	params[0] = x;
    	params[1] = y;
    	
    	// integer power optimization
    	if (operation == BasicBinaryOperation::POWER) {
    		if (y->isNumber()) {
    			Number::const_pointer number_y = dynamic_cast<typeof number_y>(y);
    			if (number_y != NULL && number_y->isIntegerNumber()) {
    				IntegerNumber::const_pointer integer_y = dynamic_cast<typeof integer_y>(number_y);
    				if (integer_y != NULL) {
    					operation = BasicBinaryOperation::INT_POWER;
    					return new CompoundExpression(BinaryOperation::getOperation(operation), params);
    				}
    			}
    		}
    	}
    	
    	// x^(y/n), where 'n' is odd integer
    	// transform to '(x^y)^(1/n)'
    	if (operation == BasicBinaryOperation::POWER) {
    		if (y->isCompoundExpression()) {
    			auto compoundExpressionY = dynamic_cast<CompoundExpression::const_pointer>(y);
    			if (compoundExpressionY != NULL && compoundExpressionY->operation->isBinary()) {
    				auto innerOperation = compoundExpressionY->operation;
    				auto binaryOperation = dynamic_cast<BinaryOperation const *>(innerOperation);
    				if (binaryOperation != NULL && binaryOperation->getType() == BasicBinaryOperation::DIVIDE) {
    					Expression::const_pointer   numerator = compoundExpressionY->params[0];
    					Expression::const_pointer denominator = compoundExpressionY->params[1];
    					if (denominator->isNumber()) {
    						auto numberDenominator = dynamic_cast<Number::const_pointer>(denominator);
    						if (numberDenominator != NULL && numberDenominator->isIntegerNumber()) {
    							auto integerDenominator = dynamic_cast<IntegerNumber::const_pointer>(numberDenominator);
    							if (integerDenominator != NULL && (integerDenominator->intValue() % 2) != 0) {
    								auto base = CompoundExpression::newBinaryExpression(BasicBinaryOperation::POWER, x, numerator);
    								return CompoundExpression::newBinaryExpression(BasicBinaryOperation::NTH_ROOT, integerDenominator, base);
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    
    	return new CompoundExpression(BinaryOperation::getOperation(operation), params);
    }

    Моё. Потребовалось воткнуть оптимизацию арифметического выражения некоторого вида. В результате родился вот такой костыль.

    UncleAli, 24 Марта 2013

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

    +8

    1. 1
    2. 2
    #define I_HATE_MACRO2(BEGIN__, END__) BEGIN__##END__
    #define CONCAT_MACRO(BEGIN__, END__) I_HATE_MACRO2(BEGIN__,END__)

    LispGovno, 28 Февраля 2013

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

    +155

    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
    // сначала читаем из настроек unix-timestampы дней, в которые начинаются кварталы
    // если же не получилось прочитать настройки, берем то, что сгенерим с помощью mktime
    // правда, в настройках значения от балды, и в mktime делаются не те даты, поэтому некоторые месяцы считаем не в свой квартал
    // но кого это волнует?
      $planning_current = Array(
                                 "k1" => COption::GetOptionString("main", "req_planning_k1", mktime(0,0,0,intval(1),1, $_YEAR)),
                                 "k2" => COption::GetOptionString("main", "req_planning_k2", mktime(0,0,0,intval(3),1, $_YEAR)),
                                 "k3" => COption::GetOptionString("main", "req_planning_k3", mktime(0,0,0,intval(6),1, $_YEAR)),
                                 "k4" => COption::GetOptionString("main", "req_planning_k4", mktime(0,0,0,intval(9),1, $_YEAR)),
                               ); 
    
    // массивы с порядковыми номерами месяцев квартала
      $first_kvartal  = array("01","02","03");
      $second_kvartal = array("04","05","06");
      $third_kvartal  = array("07","08","09");
      $fourth_kvartal = array("10","11","12");
    
    ... // здесь html с шапкой таблицы и началом первой строки
      
    foreach($first_kvartal as $key){ // $key нигде не используется
                $c_date = time();
                $c_cyc  = mktime(0,0,0, date('m',$planning_current['k1']), date('d',$planning_current['k1']), $_YEAR); // год сменить хочу
                
                if($c_cyc < $c_date) { // если квартал уже начался
                  ... // здесь html с ячейкой, в которой заявка текущего месяца показана одним способом
                } else {
                  ... // здесь html с ячейкой, в которой заявка текущего месяца показана другим способом
    			}
    }
    
    ... // здесь html, завершающий первую строку и начинающий вторую
    
    ... // и еще три абсолютно таких же цикла - для второго, третьего и четвертого кварталов

    Задача: вывести в таблицу ежемесячные заявки для года $_YEAR, причем каждый квартал в отдельной строке

    clauclauclau, 21 Февраля 2013

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

    +118

    1. 1
    2. 2
    fib = 0 : 1 : zipWith (+) fib (tail fib)
    main = print $ take 700 fib

    HaskellGovno, 20 Февраля 2013

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

    +138

    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
    $sql_ex = array();
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '5')
    	$sql_ex[] = " `ex`.`num` = 5 ";
    else
    	$sql_ex[] = " `ex`.`num` != 5 ";
    
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '7')
    	$sql_ex[] = " `ex`.`num` = 7 ";
    else
    	$sql_ex[] = " `ex`.`num` != 7 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '4')
    	$sql_ex[] = " `ex`.`num` = 4 ";
    else
    	$sql_ex[] = " `ex`.`num` != 4 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '10')
    	$sql_ex[] = " `ex`.`num` = 10 ";
    else
    	$sql_ex[] = " `ex`.`num` != 10 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '11')
    	$sql_ex[] = " `ex`.`num` = 11 ";
    else
    	$sql_ex[] = " `ex`.`num` != 11 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '14')
    	$sql_ex[] = " `ex`.`num` = 14 ";
    else
    	$sql_ex[] = " `ex`.`num` != 14 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '19')
    	$sql_ex[] = " `ex`.`num` = 19 ";
    else
    	$sql_ex[] = " `ex`.`num` != 19 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '20')
    	$sql_ex[] = " `ex`.`num` = 20 ";
    else
    	$sql_ex[] = " `ex`.`num` != 20 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '21')
    	$sql_ex[] = " `ex`.`num` = 21 ";
    else
    	$sql_ex[] = " `ex`.`num` != 21 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '13')
    	$sql_ex[] = " `ex`.`num` = 13 ";
    else
    	$sql_ex[] = " `ex`.`num` != 13 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '12')
    	$sql_ex[] = " `ex`.`num` = 12 ";
    else
    	$sql_ex[] = " `ex`.`num` != 12 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '6')
    	$sql_ex[] = " `ex`.`num` = 6 ";
    else
    	$sql_ex[] = " `ex`.`num` != 6 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '17')
    	$sql_ex[] = " `ex`.`num` = 17 ";
    else
    	$sql_ex[] = " `ex`.`num` != 17 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '23')
    	$sql_ex[] = " `ex`.`num` = 23 ";
    else
    	$sql_ex[] = " `ex`.`num` != 23 ";
    if(isset($this->request->get["id"]) && $this->request->get["id"] == '16')
    	$sql_ex[] = " `ex`.`num` = 16 ";
    else
    	$sql_ex[] = " `ex`.`num` != 16 ";
    $sql_extra = '';
    if (!empty($sql_ex)) $sql_extra = ' AND '.implode(" AND ", $sql_ex);

    В начале нужно было одно условие, потом еще и еще и ...

    gvncode, 14 Февраля 2013

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

    +166

    1. 1
    var strLabel = "<label for='yyyy' generated='true' class='error'>Чтобы зарегистрироваться, вам должно быть не менее 00 лет.</label>".replace(/00/gi, ageLimit);

    Автор: samsung

    111111, 11 Февраля 2013

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

    +125

    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
    <ul class="select"><li><a href="#nogo"><b>Clients</b><!--[if IE 7]><!--></a><!--<![endif]-->
            <!--[if lte IE 6]><table><tr><td><![endif]-->
            <div class="select_sub">
                <ul class="sub">
                    <li><a href="#nogo">Clients Details 1</a></li>
                    <li><a href="#nogo">Clients Details 2</a></li>
                    <li><a href="#nogo">Clients Details 3</a></li>
                 
                </ul>
            </div>
            <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>
            </ul>

    Год выпуска неизвестен, но попалось сегодня....

    nonamez, 07 Февраля 2013

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

    −104

    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
    Запрос = Новый Запрос;
    Запрос.Текст = "
    	|ВЫБРАТЬ
    	|	ВЫБОР Когда Ном.Ссылка.ЭтоГруппа=Истина Тогда 1 Иначе 0 Конец как этоГруппа,
    	|      1 как Уровень,
    	|	ВЫБОР Когда Ном.Ссылка.Родитель.Код=""00002"" Тогда """" Иначе Ном.Ссылка.Родитель.Код Конец как кодРодителя,
    	|	Ном.Ссылка.Код как Код,
    	|	Ном.Ссылка.Наименование как Наименование,
    	|	Ном.Ссылка как Элемент
    	|ИЗ справочник.Номенклатура как Ном";
    	РЗ = Запрос.Выполнить();
    	ТЗ = РЗ.Выгрузить();
    	
    	Сообщить("1. Подготовка таблицы ...");
    	КК=0;
    	КМАКС=ТЗ.Количество();
    	Индикатор1 = ЭлементыФормы.Индикатор;
    	Индикатор1.МаксимальноеЗначение = ТЗ.Количество();
    	Индикатор1.Значение = 0;
    	Для Каждого ТекСтрока ИЗ ТЗ Цикл
    		Индикатор1.Значение = Индикатор1.Значение + 1;
    		ОбработкаПрерыванияПользователя();
    		КК = КК + 1;
    		Состояние(Формат(КК/КМАКС*100, "ЧЦ=8; ЧДЦ=2"),Цел(КК/КМАКС*100));
    		ТекСтрока.Уровень = ТекСтрока.Элемент.Уровень()-1;
    	КонецЦикла;	
    	
    	ТЗ.Сортировать("этоГруппа убыв,Уровень возр,Наименование возр");

    Вот такой вот способ получения номенклатуры вместе с иерархией

    glavdir, 06 Февраля 2013

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

    +148

    1. 1
    document.getElementById('siF20').disabled=(this.checked==true)?false:true;

    kasthack, 05 Февраля 2013

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

    +50

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public function getEgreementsInfo($client_id) {
    		$list = array();
    
    		$query = $this->db->query("
    			SELECT * FROM `".DB_PREFIX."import_11` WHERE `client_id` = '".$this->db->escape($client_id)."'
    		");
    		return $this->customer->getAgreements();
    
    		return $query->rows;
    }

    Бывают ситуации, когда ошибка вылазит на продакшене, и исправить нужно за несколько минут. В результате возникают перлы

    zima, 31 Января 2013

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